|
5 | 5 | /* */
|
6 | 6 | /* OpenPOWER HostBoot Project */
|
7 | 7 | /* */
|
8 |
| -/* Contributors Listed Below - COPYRIGHT 2011,2019 */ |
| 8 | +/* Contributors Listed Below - COPYRIGHT 2011,2020 */ |
9 | 9 | /* [+] International Business Machines Corp. */
|
10 | 10 | /* */
|
11 | 11 | /* */
|
@@ -1431,13 +1431,29 @@ errlHndl_t doMulticastWorkaround( DeviceFW::OperationType i_opType,
|
1431 | 1431 | if( !g_useMemChiplets
|
1432 | 1432 | && ((l_unit >= P9_FIRST_MC) && (l_unit <= P9_LAST_MC)) )
|
1433 | 1433 | {
|
1434 |
| - // Only access the mem chiplets if we're not in async mode |
1435 |
| - // because we don't start clocks until later on in that case |
1436 |
| - auto l_syncMode = |
1437 |
| - i_target->getAttr<TARGETING::ATTR_MC_SYNC_MODE>(); |
1438 |
| - if( l_syncMode == TARGETING::MC_SYNC_MODE_NOT_IN_SYNC ) |
| 1434 | + using namespace TARGETING; |
| 1435 | + |
| 1436 | + // Only access the mem chiplets if we're not in async mode on |
| 1437 | + // Nimbus systems, because we don't start clocks until later on |
| 1438 | + // in that case |
| 1439 | + TargetHandleList list; |
| 1440 | + PredicateCTM pred(CLASS_CHIP, TYPE_PROC); |
| 1441 | + |
| 1442 | + targetService().getAssociated(list, i_target, TargetService::PARENT_BY_AFFINITY, |
| 1443 | + TargetService::ALL, &pred); |
| 1444 | + |
| 1445 | + assert(list.size() <= 1, |
| 1446 | + "Expected no more than one PROC parent on HUID 0x%08x", |
| 1447 | + get_huid(i_target)); |
| 1448 | + |
| 1449 | + if (!list.empty() && list[0]->getAttr<ATTR_MODEL>() == MODEL_NIMBUS) |
1439 | 1450 | {
|
1440 |
| - continue; |
| 1451 | + auto l_syncMode = |
| 1452 | + i_target->getAttr<ATTR_MC_SYNC_MODE>(); |
| 1453 | + if( l_syncMode == MC_SYNC_MODE_NOT_IN_SYNC ) |
| 1454 | + { |
| 1455 | + continue; |
| 1456 | + } |
1441 | 1457 | }
|
1442 | 1458 | }
|
1443 | 1459 | #endif
|
|
0 commit comments