diff options
author | Mike Baiocchi <baiocchi@us.ibm.com> | 2015-08-04 13:08:49 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-08-12 13:28:04 -0500 |
commit | e683019b74e48e3c8efc7b9d4fa0e0a92a71a884 (patch) | |
tree | 939b5f63b4314cdb39344d21a4e5264f05698d7f | |
parent | 69262b80495d705baf5e9759beab6f113481405b (diff) | |
download | talos-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.C | 25 |
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) |