summaryrefslogtreecommitdiffstats
path: root/src/usr/htmgt/genPstate.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/htmgt/genPstate.C')
-rw-r--r--src/usr/htmgt/genPstate.C42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/usr/htmgt/genPstate.C b/src/usr/htmgt/genPstate.C
index 9eaae1747..a4fb2680f 100644
--- a/src/usr/htmgt/genPstate.C
+++ b/src/usr/htmgt/genPstate.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014 */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -41,10 +41,16 @@ using namespace TARGETING;
namespace HTMGT
{
-errlHndl_t genPstateTables()
+errlHndl_t genPstateTables(bool i_normalTables)
{
errlHndl_t err = NULL;
+ // pstate table attribute must be big enough to hold the pstate structure
+ CPPASSERT(sizeof(ATTR_PSTATE_TABLE_type) >= sizeof(PstateSuperStructure));
+ // normal and mfg pstate tables are the same size
+ CPPASSERT(sizeof(ATTR_PSTATE_TABLE_type) ==
+ sizeof(ATTR_PSTATE_TABLE_MFG_type));
+
TargetHandleList processors;
getChipResources(processors,
@@ -66,18 +72,20 @@ errlHndl_t genPstateTables()
if(occs.size() > 0)
{
+ const char * tableType = i_normalTables?"normal":"mfg";
PstateSuperStructure pstate_data;
Target * occTarget = occs[0];
ATTR_HUID_type huid = occTarget->getAttr<ATTR_HUID>();
- TMGT_INF("Building pstate table for huid 0x%x", huid);
+ TMGT_INF("genPstateTables: Building %s pstate tables for "
+ "huid 0x%x", tableType, huid);
err = FREQVOLTSVC::runP8BuildPstateDataBlock( procTarget,
&pstate_data);
if(err)
{
- TMGT_ERR( "tmgtProcessAppGenPstateTable: Failed to"
+ TMGT_ERR( "genPstateTables: Failed to"
" generate PSTATE data for OCC "
"(huid=%x).",
huid
@@ -89,14 +97,24 @@ errlHndl_t genPstateTables()
}
else
{
- ATTR_PSTATE_TABLE_type * pstateData =
- reinterpret_cast<ATTR_PSTATE_TABLE_type*>
- (&pstate_data);
-
- CPPASSERT(sizeof(ATTR_PSTATE_TABLE_type) ==
- sizeof(PstateSuperStructure));
-
- occTarget->setAttr<ATTR_PSTATE_TABLE>(*pstateData);
+ TMGT_INF("genPstateTables: %s pstate tables completed for "
+ "huid 0x%x", tableType, huid);
+ if (i_normalTables)
+ {
+ ATTR_PSTATE_TABLE_type * pstateData =
+ reinterpret_cast<ATTR_PSTATE_TABLE_type*>
+ (&pstate_data);
+
+ occTarget->setAttr<ATTR_PSTATE_TABLE>(*pstateData);
+ }
+ else
+ {
+ ATTR_PSTATE_TABLE_MFG_type * pstateData =
+ reinterpret_cast<ATTR_PSTATE_TABLE_MFG_type*>
+ (&pstate_data);
+
+ occTarget->setAttr<ATTR_PSTATE_TABLE_MFG>(*pstateData);
+ }
}
}
}
OpenPOWER on IntegriCloud