Skip to content

Commit

Permalink
PRD: Avoid Multicast read of unitCs and hostAttn during IPL steps 15 …
Browse files Browse the repository at this point in the history
…and 16

Change-Id: I7e837eec60d34bff6092db76e11706301cc15ebf
RTC: 174385
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42598
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42634
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
  • Loading branch information
Brian Stegmiller authored and zane131 committed Jul 7, 2017
1 parent b01315c commit 29c37a0
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule
Expand Up @@ -72,6 +72,7 @@ chip p9_nimbus
{
name "Global Unit Checkstop FIR";
scomaddr 0x50040018;
capture req funccall("isUcsFirAccessible");
capture group default;
};

Expand All @@ -83,6 +84,7 @@ chip p9_nimbus
{
name "Global Host Attention FIR";
scomaddr 0x50040009;
capture req funccall("isHostAttnFirAccessible");
capture group default;
};

Expand Down
43 changes: 42 additions & 1 deletion src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C
Expand Up @@ -33,6 +33,10 @@
#include <prdfExtensibleChip.H>
#include <prdfPluginMap.H>

#ifdef __HOSTBOOT_MODULE
#include <prdfPlatServices_ipl.H>
#endif

// Platform includes

using namespace TARGETING;
Expand Down Expand Up @@ -268,7 +272,7 @@ int32_t checkNimbusDD10( ExtensibleChip * i_chip,
// It does look a little weird to return FAIL when the chip is Nimbus DD1.0,
// but the purpose of this plugin is to give a non-SUCCESS return code to
// the 'try' statement in rule code so that it will execute actions
// specifically for Nimbus DD1.0 in the default branch of the 'try'
// specifically for Nimbus DD1.0 in the default branch of the 'try'.
// statement.

if ( MODEL_NIMBUS == getChipModel(trgt) && 0x10 == getChipLevel(trgt) )
Expand All @@ -288,6 +292,43 @@ PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, checkNotNimbusDD10 );

//------------------------------------------------------------------------------

int32_t isHostAttnFirAccessible(ExtensibleChip * i_chip, bool & o_isOkToAccess)
{
o_isOkToAccess = false;

// Host Processor side can always access the 'host' attn reg
// The FSP can not access it during IPL steps 15 thru 16.2
// Host attn is only needed for MS diag and runtime case.

if ( (true == atRuntime())
#ifdef __HOSTBOOT_MODULE
|| (true == isInMdiaMode())
#endif
)
{
o_isOkToAccess = true;
}

return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isHostAttnFirAccessible );

//------------------------------------------------------------------------------

int32_t isUcsFirAccessible(ExtensibleChip * i_chip, bool & o_isOkToAccess)
{
o_isOkToAccess = (true == atRuntime()) ? true : false;

// Host Processor side can always access the 'unitCS' reg
// The FSP can not access it during IPL steps 15 thru 16.2
// We don't really use unitCs at this time.

return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isUcsFirAccessible );

//------------------------------------------------------------------------------

} // end namespace Proc

} // end namespace PRDF

0 comments on commit 29c37a0

Please sign in to comment.