summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-07-24 08:48:20 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-08-01 09:00:52 -0500
commit920ab5c89a622cb21d31ca9fb27e39c2e1c90935 (patch)
treed14cafcf198d3e3a5110ce67fa06afc696ce76e6
parentd3f3811d7bb317c8f7a4ad690aaa8433e975dc86 (diff)
downloadtalos-hostboot-920ab5c89a622cb21d31ca9fb27e39c2e1c90935.tar.gz
talos-hostboot-920ab5c89a622cb21d31ca9fb27e39c2e1c90935.zip
SW268884: INITPROC: FSP&Hostboot - New sleep attribute and associated
CMVC-Prereq:931657 CQ:SW268884 Change-Id: Ie9ab8334c224ece3cb5e68a2c0a59a942208c4f7 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/12117 Reviewed-by: Thi N. Tran <thi@us.ibm.com> Tested-by: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/12428 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/build/citest/etc/bbuild2
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/build_winkle_images.C10
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h10
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_errors.xml31
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_fixed.C138
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C36
-rw-r--r--src/usr/hwpf/hwp/runtime_attributes/pm_plat_attributes.xml22
-rw-r--r--src/usr/runtime/common/hsvc_sysdata.C5
-rw-r--r--src/usr/targeting/common/xmltohb/attribute_types.xml22
-rw-r--r--src/usr/targeting/common/xmltohb/target_types.xml1
10 files changed, 263 insertions, 14 deletions
diff --git a/src/build/citest/etc/bbuild b/src/build/citest/etc/bbuild
index e7e9f3ed5..e90835720 100644
--- a/src/build/citest/etc/bbuild
+++ b/src/build/citest/etc/bbuild
@@ -1 +1 @@
-/esw/fips820/Builds/built/
+/esw/fips820/Builds/b0728a_1430.820/
diff --git a/src/usr/hwpf/hwp/build_winkle_images/build_winkle_images.C b/src/usr/hwpf/hwp/build_winkle_images/build_winkle_images.C
index 609cc7f08..6e4b18847 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/build_winkle_images.C
+++ b/src/usr/hwpf/hwp/build_winkle_images/build_winkle_images.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -436,6 +438,12 @@ void* call_host_build_winkle( void *io_pArgs )
assert (l_memBase != 0,
"host_build_winkle: Top of memory was 0!");
l_memBase -= VMM_ALL_HOMER_OCC_MEMORY_SIZE;
+ // Also, enable sleep mode
+ TARGETING::Target* l_sys = NULL;
+ TARGETING::targetService().getTopLevelTarget(l_sys);
+ assert( l_sys != NULL );
+ uint8_t l_sleepEnable = 1;
+ l_sys->setAttr<TARGETING::ATTR_PM_SLEEP_ENABLE>(l_sleepEnable);
}
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"HOMER base = %x", l_memBase);
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
index f76973185..29f5b4a4a 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_delta_scan_rw.h
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -20,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_delta_scan_rw.h,v 1.49 2014/05/13 13:31:51 jmcgill Exp $
+// $Id: p8_delta_scan_rw.h,v 1.51 2014/07/03 19:40:37 jmcgill Exp $
#define OVERRIDE_OFFSET 8 // Byte offset of forward pointer's addr relative
// to base forward pointer's addr.
#define SIZE_IMAGE_BUF_MAX 5000000 // Max ~5MB image buffer size.
@@ -43,7 +45,10 @@
#define PERV_BNDY_PLL_RING_ALT_TOC_NAME "perv_bndy_pll_ring_alt"
#define MAX_FUNC_L3_RING_LIST_ENTRIES 64
#define MAX_FUNC_L3_RING_SIZE 7000 // Bytes
+#define MAX_FARY_L2_RING_LIST_ENTRIES 2
+#define MAX_FARY_L2_RING_SIZE 8400 // Bytes
#define FUNC_L3_RING_TOC_NAME "ex_func_l3_ring"
+#define FARY_L2_RING_TOC_NAME "ex_fary_l2_ring"
#define MAX_CEN_PLL_RING_SIZE 80 // Bytes
#define TP_PLL_BNDY_RING_ALT_TOC_NAME "tp_pll_bndy_ring_alt"
#define STANDALONE_MBOX0_VALUE_TOC_NAME "standalone_mbox0_value"
@@ -53,6 +58,7 @@
#define UNTRUSTED_BAR_TOC_NAME "fabric_config"
#define UNTRUSTED_PBA_BAR_TOC_NAME "fabric_config_pba"
#define REFCLOCK_TERM_TOC_NAME "refclock_term"
+#define PM_SLEEP_ENABLE_TOC_NAME "pm_sleep_enable"
/***** Scan setting *****/
#define OPCG_SCAN_RATIO 4
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_errors.xml b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_errors.xml
index a76559e00..8dff7aa56 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_errors.xml
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_errors.xml
@@ -5,7 +5,9 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- COPYRIGHT International Business Machines Corp. 2012,2014 -->
+<!-- Contributors Listed Below - COPYRIGHT 2012,2014 -->
+<!-- [+] International Business Machines Corp. -->
+<!-- -->
<!-- -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); -->
<!-- you may not use this file except in compliance with the License. -->
@@ -20,7 +22,7 @@
<!-- permissions and limitations under the License. -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: p8_slw_build_errors.xml,v 1.9 2014/05/28 02:33:33 cmolsen Exp $ -->
+<!-- $Id: p8_slw_build_errors.xml,v 1.10 2014/07/03 19:53:58 jmcgill Exp $ -->
<!-- Error definitions for proc_slw_build procedure -->
<hwpErrors>
<!-- *********************************************************************** -->
@@ -207,7 +209,30 @@
<procedure>CODE</procedure>
<priority>HIGH</priority>
</callout>
-</hwpError>
+ </hwpError>
+ <!-- *********************************************************************** -->
+ <hwpError>
+ <rc>RC_PROC_SLWB_L2_FARY_OVERLAY_ERROR</rc>
+ <description>Existing ring has 1-bits in overlay locations.</description>
+ <ffdc>DATA_FAIL_BYTE_NO</ffdc>
+ <ffdc>DATA_EXISTING_RING_BYTE</ffdc>
+ <ffdc>DATA_OVERLAY_RING_BYTE</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
+ </hwpError>
+ <!-- *********************************************************************** -->
+ <hwpError>
+ <rc>RC_PROC_SLWB_SLEEP_PROCESSING_ERROR</rc>
+ <description>Unsupported chip type/EC combination found in sleep procesing code.</description>
+ <ffdc>CT</ffdc>
+ <ffdc>EC</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
+ </hwpError>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROC_SLWB_WF_CREATION_ERROR</rc>
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_fixed.C b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_fixed.C
index fc266b0c6..18d5a5e76 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_fixed.C
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_slw_build_fixed.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -20,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_slw_build_fixed.C,v 1.19 2014/05/28 02:32:41 cmolsen Exp $
+// $Id: p8_slw_build_fixed.C,v 1.20 2014/07/25 19:42:24 jmcgill Exp $
/*------------------------------------------------------------------------------*/
/* *! TITLE : p8_slw_build_fixed */
/* *! DESCRIPTION : Extracts and decompresses delta ring states from EPROM */
@@ -296,11 +298,16 @@ ReturnCode p8_slw_build_fixed( const fapi::Target &i_target,
// Get various FAPI attributes and variables needed for ring unraveling.
// ==========================================================================
uint8_t attrAsyncSafeMode=0, bAsyncSafeMode;
+ uint8_t attrSleepEnable=1, bSleepEnable;
uint32_t attrFuncL3RingList[MAX_FUNC_L3_RING_LIST_ENTRIES]={0};
uint8_t attrFuncL3RingData[MAX_FUNC_L3_RING_SIZE]={0};
+ uint32_t attrFaryL2RingList[MAX_FARY_L2_RING_LIST_ENTRIES]={0};
+ uint8_t attrFaryL2RingData[MAX_FARY_L2_RING_SIZE]={0};
uint32_t attrFuncL3RingLength=0;
+ uint32_t attrFaryL2RingLength=0;
SbeXipItem xipTocItem;
uint64_t xipFuncL3RingVector=0;
+ uint64_t xipFaryL2RingVector=0;
uint32_t iEntry;
// Safe mode status.
@@ -349,6 +356,80 @@ ReturnCode p8_slw_build_fixed( const fapi::Target &i_target,
}
xipFuncL3RingVector = xipTocItem.iv_address;
}
+
+ // sleep enable/disable
+ rc = FAPI_ATTR_GET(ATTR_PM_SLEEP_ENABLE, NULL, attrSleepEnable);
+ FAPI_DBG("--> attrSleepEnable = 0x%x ", attrSleepEnable);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PROC_SLEEP_ENABLE) returned error.");
+ return rc;
+ }
+ bSleepEnable = attrSleepEnable;
+ FAPI_DBG("--> bSleepEnable = 0x%x ",bSleepEnable);
+ // Obtain ring name and ring's vector location from image.
+ if (bSleepEnable) {
+ uint8_t chipType;
+ rc = FAPI_ATTR_GET_PRIVILEGED(ATTR_NAME, &i_target, chipType);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET_PRIVILEGED() failed w/rc=%i and chipType=0x%02x",(uint32_t)rc,chipType);
+ return rc;
+ }
+ // configure overlay ring/ring length based on CT/EC
+ if ((chipType == fapi::ENUM_ATTR_NAME_MURANO) && (ddLevel < 0x20))
+ {
+ attrFaryL2RingList[0] = 0x1E2100C0;
+ attrFaryL2RingList[1] = 0xFFFF0000;
+ attrFaryL2RingLength = 82649;
+ }
+ else if ((chipType == fapi::ENUM_ATTR_NAME_MURANO) && (ddLevel >= 0x20))
+ {
+ attrFaryL2RingList[0] = 0x1DC4000C;
+ attrFaryL2RingList[1] = 0xFFFF0000;
+ attrFaryL2RingLength = 83294;
+ }
+ else if ((chipType == fapi::ENUM_ATTR_NAME_VENICE) && (ddLevel < 0x20))
+ {
+ attrFaryL2RingList[0] = 0x1DA600C0;
+ attrFaryL2RingList[1] = 0xFFFF0000;
+ attrFaryL2RingLength = 83050;
+ }
+ else if (((chipType == fapi::ENUM_ATTR_NAME_VENICE) && (ddLevel >= 0x20)) ||
+ (chipType == fapi::ENUM_ATTR_NAME_NAPLES))
+ {
+ attrFaryL2RingList[0] = 0x1DC50003;
+ attrFaryL2RingList[1] = 0xFFFF0000;
+ attrFaryL2RingLength = 83304;
+ }
+ else
+ {
+ FAPI_ERR("Unsupported CT/EC combination in sleep processing code!");
+ const uint8_t CT = chipType;
+ const uint8_t EC = ddLevel;
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_SLWB_SLEEP_PROCESSING_ERROR);
+ return rc;
+ }
+
+ for (iEntry=0; iEntry<MAX_FARY_L2_RING_LIST_ENTRIES; iEntry++) {
+ if (attrFaryL2RingList[iEntry]!=0xffff0000) {
+ attrFaryL2RingData[attrFaryL2RingList[iEntry]>>16] = (uint8_t)((attrFaryL2RingList[iEntry]<<24)>>24);
+ }
+ else
+ break;
+ }
+ FAPI_DBG("Overlay [raw] ring created for func L3 ring.");
+
+ // Get ring name from xip image.
+ rcLoc = sbe_xip_find((void*)i_imageIn, FARY_L2_RING_TOC_NAME, &xipTocItem);
+ if (rcLoc) {
+ FAPI_ERR("sbe_xip_find() failed w/rc=%i", rcLoc);
+ FAPI_ERR("Probable cause:");
+ FAPI_ERR("\tThe keyword (=%s) was not found.", FARY_L2_RING_TOC_NAME);
+ uint32_t & RC_LOCAL = rcLoc;
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_SLWB_KEYWORD_NOT_FOUND_ERROR);
+ return rc;
+ }
+ xipFaryL2RingVector = xipTocItem.iv_address;
+ }
#endif
@@ -493,6 +574,59 @@ ReturnCode p8_slw_build_fixed( const fapi::Target &i_target,
}
#endif
+
+#ifndef IMGBUILD_PPD_IGNORE_XIPC
+ // ==========================================================================
+ // CUSTOMIZE item: Overlay ex_fary_l2_ring
+ // Note: Check if ex_fary_l2_ring's vector address matches current backPtr.
+ // If so, perform OR operation with new attribute data for this ring.
+ // Assumptions:
+ // - Base ring only.
+ // - Correct DD level rings only.
+ // ==========================================================================
+ byteExisting=0, byteOverlay=0, bGoodByte=1;
+ if (bSleepEnable) {
+ // Find ring match by comparing backItemPtr and ring lengths. Note that
+ // we can't use fwdPtr for finding a match since we don't know which DD
+ // level ring it ended up pointing at.
+ if (xipFaryL2RingVector==myRev64(rs4RingLayout.backItemPtr) &&
+ attrFaryL2RingLength==myRev32(deltaRingRS4->iv_length)) {
+ // Perform OR between the existing ring and attribute ring.
+ sizeRingInBytes = (attrFaryL2RingLength-1)/8 + 1;
+ bGoodByte = 1;
+ FAPI_DBG("Byte[ # ]: ER OR =ER? ");
+ FAPI_DBG("-----------------------");
+ for (iByte=0; (iByte<sizeRingInBytes && bGoodByte); iByte++) {
+ if (*(attrFaryL2RingData+iByte)) {
+ // Check there are 0-bits in the existing byte where there are
+ // 1-bits in the overlay byte.
+ byteExisting = *((uint8_t*)i_buf2+iByte);
+ byteOverlay = *(&attrFaryL2RingData[0]+iByte);
+ if (byteExisting!=(byteExisting & ~byteOverlay)) {
+ FAPI_ERR("Byte[%4i]: %02x %02x %02x <-violation",iByte,byteExisting,byteOverlay,byteExisting&~byteOverlay);
+ bGoodByte = 0;
+ break;
+ }
+ else {
+ FAPI_DBG("Byte[%4i]: %02x %02x %02x ",iByte,byteExisting,byteOverlay,byteExisting&~byteOverlay);
+ }
+ // Only update existing ring when there's content in overlay data.
+ *((uint8_t*)i_buf2+iByte) = byteExisting | byteOverlay;
+ }
+ }
+ FAPI_DBG("-----------------------");
+ if (!bGoodByte) {
+ FAPI_ERR("The existing ex_l2_fary_ring has 1-bits in overlay locations. ");
+ uint32_t & DATA_FAIL_BYTE_NO = iByte;
+ uint8_t & DATA_EXISTING_RING_BYTE = byteExisting;
+ uint8_t & DATA_OVERLAY_RING_BYTE = byteOverlay;
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_SLWB_L2_FARY_OVERLAY_ERROR);
+ return rc;
+ }
+ }
+ }
+#endif
+
// ==========================================================================
// Create Wiggle-Flip Programs (but first resolve max rotate status.)
// ==========================================================================
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
index a03e9da7e..22a0f4ada 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -20,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_xip_customize.C,v 1.71 2014/05/28 15:34:53 cmolsen Exp $
+// $Id: p8_xip_customize.C,v 1.72 2014/07/03 19:52:55 jmcgill Exp $
/*------------------------------------------------------------------------------*/
/* *! TITLE : p8_xip_customize */
/* *! DESCRIPTION : Obtains repair rings from VPD and adds them to either */
@@ -598,7 +600,37 @@ ReturnCode p8_xip_customize( const fapi::Target &i_target,
FAPI_INF(" Before=0x%016llX\n",myRev64(*(uint64_t*)hostL2SingleMember));
*(uint64_t*)hostL2SingleMember = myRev64((uint64_t)attrL2SingleMember<<32);
FAPI_INF(" After =0x%016llX\n",myRev64(*(uint64_t*)hostL2SingleMember));
+
+
+ // ==========================================================================
+ // CUSTOMIZE item: Sleep enable
+ // Retrieval method: Attribute.
+ // System phase: IPL and SLW sysPhase.
+ // ==========================================================================
+ uint8_t attrSleepEnable=1;
+ void *hostSleepEnable;
+ rc = FAPI_ATTR_GET(ATTR_PM_SLEEP_ENABLE, NULL, attrSleepEnable);
+ if (rc) {
+ FAPI_ERR("FAPI_ATTR_GET(ATTR_PM_SLEEP_ENABLE) returned error.\n");
+ return rc;
+ }
+ rcLoc = sbe_xip_find( o_imageOut, PM_SLEEP_ENABLE_TOC_NAME, &xipTocItem);
+ if (rcLoc) {
+ FAPI_ERR("sbe_xip_find() failed w/rc=%i and %s", rcLoc, SBE_XIP_ERROR_STRING(errorStrings, rcLoc));
+ FAPI_ERR("Probable cause:");
+ FAPI_ERR("\tThe keyword (=%s) was not found.", PM_SLEEP_ENABLE_TOC_NAME);
+ uint32_t & RC_LOCAL = rcLoc;
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_XIPC_KEYWORD_NOT_FOUND_ERROR);
+ return rc;
+ }
+ sbe_xip_pore2host( o_imageOut, xipTocItem.iv_address, &hostSleepEnable);
+ FAPI_INF("Dumping [initial] global variable content of %s, and then the updated value:\n",
+ PM_SLEEP_ENABLE_TOC_NAME);
+ FAPI_INF(" Before=0x%016llX\n",myRev64(*(uint64_t*)hostSleepEnable));
+ *(uint64_t*)hostSleepEnable = myRev64((uint64_t)attrSleepEnable);
+ FAPI_INF(" After =0x%016llX\n",myRev64(*(uint64_t*)hostSleepEnable));
+
// ==========================================================================
// CUSTOMIZE item: Security setup.
diff --git a/src/usr/hwpf/hwp/runtime_attributes/pm_plat_attributes.xml b/src/usr/hwpf/hwp/runtime_attributes/pm_plat_attributes.xml
index c3c38108d..7bbc61d19 100644
--- a/src/usr/hwpf/hwp/runtime_attributes/pm_plat_attributes.xml
+++ b/src/usr/hwpf/hwp/runtime_attributes/pm_plat_attributes.xml
@@ -5,7 +5,9 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- COPYRIGHT International Business Machines Corp. 2012,2014 -->
+<!-- Contributors Listed Below - COPYRIGHT 2012,2014 -->
+<!-- [+] International Business Machines Corp. -->
+<!-- -->
<!-- -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); -->
<!-- you may not use this file except in compliance with the License. -->
@@ -20,7 +22,7 @@
<!-- permissions and limitations under the License. -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: pm_plat_attributes.xml,v 1.9 2014/05/20 19:33:20 daviddu Exp $ -->
+<!-- $Id: pm_plat_attributes.xml,v 1.12 2014/07/22 18:34:52 jmcgill Exp $ -->
<!--
XML file specifying Power Management HWPF attributes.
These attributes are initialized by the platform.
@@ -626,6 +628,22 @@
</attribute>
<!-- ********************************************************************* -->
<attribute>
+ <id>ATTR_PM_SLEEP_ENABLE</id>
+ <targetType>TARGET_TYPE_SYSTEM</targetType>
+ <description>Control HW response to execution of PPC sleep instruction
+ if OFF, treat sleep as nap
+ if ON, treat sleep as sleep
+
+ Producer: Hostboot
+
+ Consumer: p8_slw_build.C
+ </description>
+ <valueType>uint8</valueType>
+ <enum>OFF=0, ON=1</enum>
+ <platInit/>
+ </attribute>
+ <!-- ********************************************************************* -->
+ <attribute>
<id>ATTR_PM_SLEEP_ENTRY</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>Setting depends on di/dt charateristics of the system.
diff --git a/src/usr/runtime/common/hsvc_sysdata.C b/src/usr/runtime/common/hsvc_sysdata.C
index 1c195c7f6..827c165dc 100644
--- a/src/usr/runtime/common/hsvc_sysdata.C
+++ b/src/usr/runtime/common/hsvc_sysdata.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -78,6 +80,7 @@ HSVC_LOAD_ATTR( ATTR_PROC_R_LOADLINE_VCS );
HSVC_LOAD_ATTR( ATTR_PROC_R_LOADLINE_VDD );
HSVC_LOAD_ATTR( ATTR_PROC_VRM_VOFFSET_VCS );
HSVC_LOAD_ATTR( ATTR_PROC_VRM_VOFFSET_VDD );
+HSVC_LOAD_ATTR( ATTR_PM_SLEEP_ENABLE );
// -- Input: ../../xml/attribute_info/poreve_memory_attributes.xml --
// No attributes found
// -- Input: ../../xml/attribute_info/proc_chip_ec_feature.xml --
diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
index ab55fbd9d..17643aaef 100644
--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
@@ -14208,4 +14208,26 @@ firmware notes: Platforms should initialize this attribute to AUTO (0)</descript
</hwpfToHbAttrMap>
</attribute>
+<attribute>
+ <id>PM_SLEEP_ENABLE</id>
+ <description>Control HW response to execution of PPC sleep instruction
+ if OFF, treat sleep as nap
+ if ON, treat sleep as sleep
+ Producer: Hostboot
+ Consumer: p8_slw_build.C
+ </description>
+ <simpleType>
+ <uint8_t>
+ <default>0x0</default>
+ </uint8_t>
+ </simpleType>
+ <persistency>volatile-zeroed</persistency>
+ <readable/>
+ <writeable/>
+ <hwpfToHbAttrMap>
+ <id>ATTR_PM_SLEEP_ENABLE</id>
+ <macro>DIRECT</macro>
+ </hwpfToHbAttrMap>
+</attribute>
+
</attributes>
diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
index f7186f0c5..575905118 100644
--- a/src/usr/targeting/common/xmltohb/target_types.xml
+++ b/src/usr/targeting/common/xmltohb/target_types.xml
@@ -273,6 +273,7 @@
<attribute><id>MSS_VOLT_DDR4_VDDR_INTERCEPT</id></attribute>
<attribute><id>MSS_VDDR_OVERIDE_SPD</id></attribute>
<attribute><id>PM_PFET_WORKAROUND_RUN_FLAG</id></attribute>
+ <attribute><id>PM_SLEEP_ENABLE</id></attribute>
</targetType>
<targetType>
OpenPOWER on IntegriCloud