summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2018-05-23 13:28:02 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-05-30 09:35:08 -0400
commit9bace77a615d1066b1dba8da0987c9da612a1436 (patch)
tree8d9d5d218b42745e143a6c8e8a394b977da680c8
parent788da84977bc17b34cc7f46ea095b922a8eae6ef (diff)
downloadtalos-hostboot-9bace77a615d1066b1dba8da0987c9da612a1436.tar.gz
talos-hostboot-9bace77a615d1066b1dba8da0987c9da612a1436.zip
Defer handling attentions on non-master proc until after SMP is up
The current code enables PRD/Attention Handling on the slave processors as soon as we get the SBE started (clocks running). This is a problem because most of the FIR regs are blacklisted such that we cannot write them until after the SMP is up and we are using xscom. This restriction will lead to an infinite loop in PRD if we get a recoverable attention on the slave proc. The fix is to defer all of the attention handling on the slave procs until after the SMP is up. We will move the enabled from istep 8.5 host_attnlisten_proc to the end of istep 10.1 proc_build_smp. Note that this makes 8.5 a complete NOOP. Change-Id: I1b6542efe2cd14717d7fa55d01327121027c6862 CQ: SW429438 Backport: yes Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59268 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
-rw-r--r--src/usr/isteps/istep08/call_host_attnlisten_proc.C12
-rw-r--r--src/usr/isteps/istep10/call_proc_build_smp.C8
2 files changed, 11 insertions, 9 deletions
diff --git a/src/usr/isteps/istep08/call_host_attnlisten_proc.C b/src/usr/isteps/istep08/call_host_attnlisten_proc.C
index 455b95837..c2b3b40a3 100644
--- a/src/usr/isteps/istep08/call_host_attnlisten_proc.C
+++ b/src/usr/isteps/istep08/call_host_attnlisten_proc.C
@@ -73,15 +73,9 @@ void* call_host_attnlisten_proc(void *io_pArgs)
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_attnlisten_proc entry" );
- uint8_t l_useAllProcs = 1;
- TARGETING::Target *l_sys = NULL;
- TARGETING::targetService().getTopLevelTarget( l_sys );
- assert(l_sys != NULL);
-
- // All we need to do is set a flag so that the
- // ATTN code will check ALL processors the next
- // time it gets called versus just the master proc.
- l_sys->trySetAttr<ATTR_ATTN_CHK_ALL_PROCS>(l_useAllProcs);
+ // Function is a NOOP because with security enabled, PRD is unable
+ // to write FIRs due to blacklist violations. All of the slave
+ // processor attentions will be ignored until the SMP comes up.
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_attnlisten_proc exit" );
diff --git a/src/usr/isteps/istep10/call_proc_build_smp.C b/src/usr/isteps/istep10/call_proc_build_smp.C
index adf809a5d..e8b39ed57 100644
--- a/src/usr/isteps/istep10/call_proc_build_smp.C
+++ b/src/usr/isteps/istep10/call_proc_build_smp.C
@@ -213,6 +213,14 @@ void* call_proc_build_smp (void *io_pArgs)
++curproc;
}
+ // Set a flag so that the ATTN code will check ALL processors
+ // the next time it gets called versus just the master proc.
+ uint8_t l_useAllProcs = 1;
+ TARGETING::Target *l_sys = NULL;
+ TARGETING::targetService().getTopLevelTarget( l_sys );
+ assert(l_sys != NULL);
+ l_sys->setAttr<ATTR_ATTN_CHK_ALL_PROCS>(l_useAllProcs);
+
} while (0);
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
OpenPOWER on IntegriCloud