diff options
| author | crgeddes <crgeddes@us.ibm.com> | 2017-05-16 13:32:37 -0500 |
|---|---|---|
| committer | William G. Hoffa <wghoffa@us.ibm.com> | 2017-05-18 17:41:24 -0400 |
| commit | ce71d0bbd35d84c39537398d3c4ef7bb752a6fcf (patch) | |
| tree | cec5a64bcdece0fe77a3d3b0ef41d7a27edbf0bf /src/usr/isteps/istep15 | |
| parent | 80f0f920c548d47cc5d63ccb82915005a7b9d0a2 (diff) | |
| download | blackbird-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.C | 22 |
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) |

