summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-02-13 11:14:18 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-02-14 17:43:50 -0500
commit864e746259e46ef90ffcf8dcdc7273bd8a1ee7d0 (patch)
tree50f05181afd61a25f50baa69548f3f1be4c3a85b
parentd9c127dca8312f119b379c83b361216b910f6748 (diff)
downloadtalos-hostboot-864e746259e46ef90ffcf8dcdc7273bd8a1ee7d0.tar.gz
talos-hostboot-864e746259e46ef90ffcf8dcdc7273bd8a1ee7d0.zip
Add attribute to give platform more control over PM_RESET
The PM_RESET hwp calls special wakeup enable on all EX targets, then will clear auto-special wakeup bit on the core if special wakeup is done. In some cases hostboot does not want these steps of the PM_RESET. This attribute gives the platform the ability to decide if they want to enable special wakeup and clear autowakeup on the cores during PM_RESET CQ:SW412666 Change-Id: I8f2e40f4b122f3ff6a048fa6931a1e47f89d3e4f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53953 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53976
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/pm_plat_attributes.xml18
-rw-r--r--src/usr/isteps/istep16/call_host_activate_slave_cores.C14
-rw-r--r--src/usr/targeting/common/xmltohb/hb_customized_attrs.xml4
-rwxr-xr-xsrc/usr/targeting/targetservicestart.C6
4 files changed, 37 insertions, 5 deletions
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/pm_plat_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/pm_plat_attributes.xml
index 464c01d81..c47d19735 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/pm_plat_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/pm_plat_attributes.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- Contributors Listed Below - COPYRIGHT 2015,2017 -->
+<!-- Contributors Listed Below - COPYRIGHT 2015,2018 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
@@ -2213,4 +2213,20 @@
<default>NO_FALLBACK</default>
</attribute>
<!-- ********************************************************************* -->
+ <attribute>
+ <id>ATTR_SKIP_WAKEUP</id>
+ <targetType>TARGET_TYPE_SYSTEM</targetType>
+ <description>
+ The PM_RESET hwp calls special wakeup enable on all EX targets, then
+ will clear auto-special wakeup bit on the core if special wakeup is done.
+ In some cases hostboot does not want these steps of the PM_RESET. This
+ attribute gives the platform the ability to decide if they want to enable
+ special wakeup and clear autowakeup on the cores during PM_RESET
+ </description>
+ <valueType>uint8</valueType>
+ <writeable/>
+ <platInit/>
+ <default>0</default>
+ </attribute>
+ <!-- ********************************************************************* -->
</attributes>
diff --git a/src/usr/isteps/istep16/call_host_activate_slave_cores.C b/src/usr/isteps/istep16/call_host_activate_slave_cores.C
index a6bff1970..865a4f5d0 100644
--- a/src/usr/isteps/istep16/call_host_activate_slave_cores.C
+++ b/src/usr/isteps/istep16/call_host_activate_slave_cores.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -79,6 +79,9 @@ void* call_host_activate_slave_cores (void *io_pArgs)
TargetHandleList l_cores;
getAllChiplets(l_cores, TYPE_CORE);
+ TARGETING::Target* sys = NULL;
+ TARGETING::targetService().getTopLevelTarget(sys);
+ assert( sys != NULL );
uint32_t l_numCores = 0;
for(TargetHandleList::const_iterator
@@ -99,9 +102,7 @@ void* call_host_activate_slave_cores (void *io_pArgs)
l_processor->getAttr<TARGETING::ATTR_FABRIC_GROUP_ID>();
FABRIC_CHIP_ID_ATTR l_chipId =
l_processor->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>();
- TARGETING::Target* sys = NULL;
- TARGETING::targetService().getTopLevelTarget(sys);
- assert( sys != NULL );
+
const fapi2::Target<fapi2::TARGET_TYPE_CORE> l_fapi2_coreTarget(
const_cast<TARGETING::Target*> (*l_core));
@@ -258,6 +259,11 @@ void* call_host_activate_slave_cores (void *io_pArgs)
}
#endif
+ //Set SKIP_WAKEUP to false after all cores are powered on (16.2)
+ //If this is not set false, PM_RESET will fail to enable special wakeup.
+ // PM_RESET is expected to enable special_wakeup after all the cores powered on
+ sys->setAttr<ATTR_SKIP_WAKEUP>(0);
+
// Now that the slave cores are running, we need to include them in
// multicast scom operations
SCOM::enableSlaveCoreMulticast();
diff --git a/src/usr/targeting/common/xmltohb/hb_customized_attrs.xml b/src/usr/targeting/common/xmltohb/hb_customized_attrs.xml
index 7b6d8d357..abc103efc 100644
--- a/src/usr/targeting/common/xmltohb/hb_customized_attrs.xml
+++ b/src/usr/targeting/common/xmltohb/hb_customized_attrs.xml
@@ -662,6 +662,10 @@
<id>LINK_TRAIN</id>
<writeable/>
</attribute>
+ <attribute>
+ <id>SKIP_WAKEUP</id>
+ <persistency>volatile-zeroed</persistency>
+ </attribute>
<!-- =====================================================================
End of customizations definitions
================================================================= -->
diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C
index 740470a53..882c4391a 100755
--- a/src/usr/targeting/targetservicestart.C
+++ b/src/usr/targeting/targetservicestart.C
@@ -344,6 +344,12 @@ static void initializeAttributes(TargetService& i_targetService,
i_targetService.getTopLevelTarget(l_pTopLevel);
if(l_pTopLevel)
{
+ //Set SKIP_WAKEUP to true until all cores are powered on (16.2)
+ //If this is not set to true, PM_RESET , which is called between
+ //now and istep 16.2 in various configurations and IPL flows will attempt
+ //to enable special wakeup on cores that are not yet powered
+ l_pTopLevel->setAttr<ATTR_SKIP_WAKEUP>(1);
+
Target* l_pMasterProcChip = NULL;
i_targetService.masterProcChipTargetHandle(l_pMasterProcChip);
OpenPOWER on IntegriCloud