summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Baiocchi <baiocchi@us.ibm.com>2015-08-04 13:08:49 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-08-12 13:28:04 -0500
commite683019b74e48e3c8efc7b9d4fa0e0a92a71a884 (patch)
tree939b5f63b4314cdb39344d21a4e5264f05698d7f
parent69262b80495d705baf5e9759beab6f113481405b (diff)
downloadtalos-hostboot-e683019b74e48e3c8efc7b9d4fa0e0a92a71a884.tar.gz
talos-hostboot-e683019b74e48e3c8efc7b9d4fa0e0a92a71a884.zip
Read SBE_VITAL_REG from Master Processor for OpenPower Systems
The SBE Update code needs to read the SBE_VITAL_REG to determine which SBE Seeprom a processor used to boot. For OpenPower slave processors this register has not been setup yet at the time it is read, so the master processor's SBE_VITAL_REG will be used instead. Change-Id: I22d9c21c44cf9be9cf5da58bb73cd1e0bcb576b0 CQ: SW312152 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19527 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Dean Sanner <dsanner@us.ibm.com> Reviewed-by: MATTHEW A. PLOETZ <maploetz@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/usr/sbe/sbe_update.C25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C
index 28b64379f..4046e0c0c 100644
--- a/src/usr/sbe/sbe_update.C
+++ b/src/usr/sbe/sbe_update.C
@@ -1260,8 +1260,29 @@ namespace SBE
do{
+ TARGETING::Target * l_target=i_target;
+
+#if defined(CONFIG_SBE_UPDATE_INDEPENDENT) || \
+ defined(CONFIG_SBE_UPDATE_SIMULTANEOUS)
+
+ // Get the Master Proc Chip Target for comparisons later
+ TARGETING::Target* masterProcChipTargetHandle = NULL;
+ TargetService& tS = targetService();
+ err = tS.queryMasterProcChipTargetHandle(
+ masterProcChipTargetHandle);
+ if ( i_target != masterProcChipTargetHandle )
+ {
+ l_target=masterProcChipTargetHandle;
+ TRACFCOMP( g_trac_sbe, INFO_MRK"getSbeBootSeeprom() "
+ "using master proc to read SBE_VITAL_REG: "
+ "i_target=0x%.8x, target=0x%.8x ",
+ TARGETING::get_huid(i_target),
+ TARGETING::get_huid(l_target));
+
+ }
+#endif
size_t op_size = sizeof(scomData);
- err = deviceRead( i_target,
+ err = deviceRead( l_target,
&scomData,
op_size,
DEVICE_SCOM_ADDRESS(SBE_VITAL_REG_0x0005001C) );
@@ -1271,7 +1292,7 @@ namespace SBE
"reading SBE VITAL REG (0x%.8X) from Target :"
"HUID=0x%.8X",
SBE_VITAL_REG_0x0005001C,
- TARGETING::get_huid(i_target));
+ TARGETING::get_huid(l_target));
break;
}
if(scomData & SBE_BOOT_SELECT_MASK)
OpenPOWER on IntegriCloud