summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep15
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2017-05-16 13:32:37 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2017-05-18 17:41:24 -0400
commitce71d0bbd35d84c39537398d3c4ef7bb752a6fcf (patch)
treecec5a64bcdece0fe77a3d3b0ef41d7a27edbf0bf /src/usr/isteps/istep15
parent80f0f920c548d47cc5d63ccb82915005a7b9d0a2 (diff)
downloadblackbird-hostboot-ce71d0bbd35d84c39537398d3c4ef7bb752a6fcf.tar.gz
blackbird-hostboot-ce71d0bbd35d84c39537398d3c4ef7bb752a6fcf.zip
Call pm_init with the RESET flag for all proc during MPIPL
During istep 15 we set up a bunch of stuff for the PM complex. We ran into issues during MPIPL where the PGPE wasn't getting reset. Adding in this PM_RESET during istep 15 to put the PGPE into a safe state Change-Id: Ifeac1d5be0574cdff13a2ad039b9ce7b27e3b863 CQ: SW388687 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40577 Reviewed-by: Martin Gloff <mgloff@us.ibm.com> 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> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/isteps/istep15')
-rw-r--r--src/usr/isteps/istep15/host_build_stop_image.C22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/usr/isteps/istep15/host_build_stop_image.C b/src/usr/isteps/istep15/host_build_stop_image.C
index 0e4e9ed0a..40f3592b1 100644
--- a/src/usr/isteps/istep15/host_build_stop_image.C
+++ b/src/usr/isteps/istep15/host_build_stop_image.C
@@ -372,6 +372,22 @@ void* host_build_stop_image (void *io_pArgs)
void* l_temp_buffer2 = malloc(MAX_RING_BUF_SIZE);
do {
+ //Determine top-level system target
+ TARGETING::Target* l_sys = NULL;
+ TARGETING::targetService().getTopLevelTarget(l_sys);
+ assert( l_sys != NULL );
+
+ if (l_sys->getAttr<TARGETING::ATTR_IS_MPIPL_HB>())
+ {
+ l_errl = HBPM::resetPMAll();
+ if(l_errl)
+ {
+ //Break out of the do-while loop..
+ //we should have been able to do a PM reset
+ break;
+ }
+ }
+
// Get the node-offset for our instance by looking at the HRMOR
uint64_t l_memBase = cpu_spr_value(CPU_SPR_HRMOR);
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "HRMOR=%.16X", l_memBase );
@@ -406,9 +422,6 @@ void* host_build_stop_image (void *io_pArgs)
//Since we have the HOMER location defined, set the
// OCC common attribute to be used later by pm code
- TARGETING::Target* l_sys = NULL;
- TARGETING::targetService().getTopLevelTarget(l_sys);
- assert( l_sys != NULL );
l_sys->setAttr<TARGETING::ATTR_OCC_COMMON_AREA_PHYS_ADDR>
(reinterpret_cast<uint64_t>(l_pRealMemBase)
+ VMM_HOMER_REGION_SIZE);
@@ -430,12 +443,13 @@ void* host_build_stop_image (void *io_pArgs)
#endif
// Loop through all functional Procs and generate images for them.
+ //get a list of all the functional Procs
TARGETING::TargetHandleList l_procChips;
getAllChips( l_procChips,
TARGETING::TYPE_PROC );
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Found %d procs in system",
+ "Found %d functional procs in system",
l_procChips.size() );
for (const auto & l_procChip: l_procChips)
OpenPOWER on IntegriCloud