summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/sbeio/sbeioif.H1
-rwxr-xr-xsrc/usr/targeting/targetservicestart.C25
2 files changed, 26 insertions, 0 deletions
diff --git a/src/include/usr/sbeio/sbeioif.H b/src/include/usr/sbeio/sbeioif.H
index 357a29a95..a951fe4a4 100644
--- a/src/include/usr/sbeio/sbeioif.H
+++ b/src/include/usr/sbeio/sbeioif.H
@@ -32,6 +32,7 @@ namespace SBEIO
enum KeyAddrStashKeys
{
RSV_MEM_ATTR_ADDR = 0x01, //Start at non-zero
+ HYPERVISOR_HRMOR = 0x02,
//On SBE side struct is defaulted so that
//Keys are 0xFF and Vals are 0xFFFFFFFFFFFFFFFF
//So a key w/ FF means its empty or at its default val
diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C
index 4c06c6f52..5eb625d52 100755
--- a/src/usr/targeting/targetservicestart.C
+++ b/src/usr/targeting/targetservicestart.C
@@ -64,6 +64,7 @@
#include <lpc/lpcif.H>
#include <xscom/xscomif.H>
#include <bootloader/bootloaderif.H>
+#include <sbeio/sbeioif.H>
#ifdef CONFIG_DRTM
#include <secureboot/drtm.H>
@@ -379,6 +380,30 @@ static void initializeAttributes(TargetService& i_targetService,
l_pTopLevel->setAttr<ATTR_HB_RSV_MEM_NEXT_SECTION>(0);
l_pTopLevel->setAttr<ATTR_ATTN_CHK_ALL_PROCS>(1);
+ //It is possible that the hypervisor moved the HRMOR
+ //The SBE should have read the HRMOR value from the master
+ //core prior to stopping its clocks and passed that
+ //value to the bootloader. The bootloader passes this to
+ //HB via the BlToHbDataManager
+ // Setup physical TOC address
+ uint64_t l_hyp_hrmor = 0;
+
+ Bootloader::keyAddrPair_t l_keyAddrPairs =
+ g_BlToHbDataManager.getKeyAddrPairs();
+
+ for (uint8_t keyIndex = 0; keyIndex < MAX_ROW_COUNT; keyIndex++)
+ {
+ if(l_keyAddrPairs.key[keyIndex] == SBEIO::HYPERVISOR_HRMOR)
+ {
+ l_hyp_hrmor = l_keyAddrPairs.addr[keyIndex];
+ }
+ }
+
+ if(l_hyp_hrmor)
+ {
+ l_pTopLevel->setAttr<ATTR_PAYLOAD_BASE>(l_hyp_hrmor);
+ }
+
TARGETING::PredicateCTM l_chipFilter(CLASS_CHIP, TYPE_PROC);
TARGETING::PredicateIsFunctional l_functional;
TARGETING::PredicatePostfixExpr l_functionalChips;
OpenPOWER on IntegriCloud