Skip to content

Commit ce71d0b

Browse files
crgeddeswghoffa
authored andcommitted
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>
1 parent 80f0f92 commit ce71d0b

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/usr/isteps/istep15/host_build_stop_image.C

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,22 @@ void* host_build_stop_image (void *io_pArgs)
372372
void* l_temp_buffer2 = malloc(MAX_RING_BUF_SIZE);
373373

374374
do {
375+
//Determine top-level system target
376+
TARGETING::Target* l_sys = NULL;
377+
TARGETING::targetService().getTopLevelTarget(l_sys);
378+
assert( l_sys != NULL );
379+
380+
if (l_sys->getAttr<TARGETING::ATTR_IS_MPIPL_HB>())
381+
{
382+
l_errl = HBPM::resetPMAll();
383+
if(l_errl)
384+
{
385+
//Break out of the do-while loop..
386+
//we should have been able to do a PM reset
387+
break;
388+
}
389+
}
390+
375391
// Get the node-offset for our instance by looking at the HRMOR
376392
uint64_t l_memBase = cpu_spr_value(CPU_SPR_HRMOR);
377393
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "HRMOR=%.16X", l_memBase );
@@ -406,9 +422,6 @@ void* host_build_stop_image (void *io_pArgs)
406422

407423
//Since we have the HOMER location defined, set the
408424
// OCC common attribute to be used later by pm code
409-
TARGETING::Target* l_sys = NULL;
410-
TARGETING::targetService().getTopLevelTarget(l_sys);
411-
assert( l_sys != NULL );
412425
l_sys->setAttr<TARGETING::ATTR_OCC_COMMON_AREA_PHYS_ADDR>
413426
(reinterpret_cast<uint64_t>(l_pRealMemBase)
414427
+ VMM_HOMER_REGION_SIZE);
@@ -430,12 +443,13 @@ void* host_build_stop_image (void *io_pArgs)
430443
#endif
431444

432445
// Loop through all functional Procs and generate images for them.
446+
//get a list of all the functional Procs
433447
TARGETING::TargetHandleList l_procChips;
434448
getAllChips( l_procChips,
435449
TARGETING::TYPE_PROC );
436450

437451
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
438-
"Found %d procs in system",
452+
"Found %d functional procs in system",
439453
l_procChips.size() );
440454

441455
for (const auto & l_procChip: l_procChips)

0 commit comments

Comments
 (0)