summaryrefslogtreecommitdiffstats
path: root/src/usr/devtree/bld_devtree.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/devtree/bld_devtree.C')
-rw-r--r--src/usr/devtree/bld_devtree.C43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
index 0ee183b10..f5fb09281 100644
--- a/src/usr/devtree/bld_devtree.C
+++ b/src/usr/devtree/bld_devtree.C
@@ -102,47 +102,53 @@ void bld_swCheckstopFir (devTree * i_dt, dtOffset_t & i_parentNode)
const uint32_t PBEASTFIR_ACT1 = 0x02010c87;
uint64_t BIT_31_MASK = 0xfffffffeffffffff;
uint64_t l_data = 0;
+ size_t opsize = sizeof(uint64_t);
errlHndl_t l_errl = NULL;
do
{
- TARGETING::Target * l_proc = NULL;
- (void)TARGETING::targetService().masterProcChipTargetHandle(l_proc);
- size_t opsize = sizeof(uint64_t);
+ // unmask all functional proc chip targets
+ TARGETING::TargetHandleList l_procTargetList;
+ getAllChips(l_procTargetList, TYPE_PROC);
- // clear PBEASTFIR_ACT0 bit 31
- l_errl = deviceRead( l_proc,
+ for (size_t proc = 0; proc < l_procTargetList.size(); proc++)
+ {
+ TARGETING::Target * l_proc = l_procTargetList[proc];
+
+ // clear PBEASTFIR_ACT0 bit 31
+ l_errl = deviceRead( l_proc,
&l_data,
opsize,
DEVICE_SCOM_ADDRESS(PBEASTFIR_ACT0) );
- if (l_errl) break;
- l_data &= BIT_31_MASK;
- l_errl = deviceWrite( l_proc,
+ if (l_errl) break;
+ l_data &= BIT_31_MASK;
+ l_errl = deviceWrite( l_proc,
&l_data,
opsize,
DEVICE_SCOM_ADDRESS(PBEASTFIR_ACT0) );
- if (l_errl) break;
+ if (l_errl) break;
- // clear PBEASTFIR_ACT1 bit 31
- l_errl = deviceRead( l_proc,
+ // clear PBEASTFIR_ACT1 bit 31
+ l_errl = deviceRead( l_proc,
&l_data,
opsize,
DEVICE_SCOM_ADDRESS(PBEASTFIR_ACT1) );
- if (l_errl) break;
- l_data &= BIT_31_MASK;
- l_errl = deviceWrite( l_proc,
+ if (l_errl) break;
+ l_data &= BIT_31_MASK;
+ l_errl = deviceWrite( l_proc,
&l_data,
opsize,
DEVICE_SCOM_ADDRESS(PBEASTFIR_ACT1) );
- if (l_errl) break;
+ if (l_errl) break;
- // clear PBEASTFIR_MASK bit 31 using the AND register
- l_errl = deviceWrite( l_proc,
+ // clear PBEASTFIR_MASK bit 31 using the AND register
+ l_errl = deviceWrite( l_proc,
&BIT_31_MASK,
opsize,
DEVICE_SCOM_ADDRESS(PBEASTFIR_MASK_AND) );
- if (l_errl) break;
+ if (l_errl) break;
+ }
// add devtree property
uint32_t cellProperties [2] = {PBEASTFIR_OR,31}; // PBEASTFIR[31]
@@ -150,6 +156,7 @@ void bld_swCheckstopFir (devTree * i_dt, dtOffset_t & i_parentNode)
"ibm,sw-checkstop-fir",
cellProperties, 2);
} while (0);
+
if (l_errl) // commit error and keep going
{
errlCommit(l_errl, DEVTREE_COMP_ID);
OpenPOWER on IntegriCloud