summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/edi_ei_initialization
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-02-20 08:59:45 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-27 11:45:05 -0600
commitea2e98ff9d1963d75fc448d18d2880950af1fa5f (patch)
tree53506f0179edd252eb3800089dd97d86831acb11 /src/usr/hwpf/hwp/edi_ei_initialization
parent941d3e56f1f933dba3f98c3f82fae0561a5201e7 (diff)
downloadtalos-hostboot-ea2e98ff9d1963d75fc448d18d2880950af1fa5f.tar.gz
talos-hostboot-ea2e98ff9d1963d75fc448d18d2880950af1fa5f.zip
INITPROC: Hostboot SW246743 insecure/GP0 iovalids fix
Change-Id: Iae575f89828de19d82c3d7b88f09d475d700666c CQ:SW246743 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9041 Tested-by: Jenkins Server Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/edi_ei_initialization')
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/proc_fab_iovalid/proc_fab_iovalid.C107
1 files changed, 52 insertions, 55 deletions
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/proc_fab_iovalid/proc_fab_iovalid.C b/src/usr/hwpf/hwp/edi_ei_initialization/proc_fab_iovalid/proc_fab_iovalid.C
index b10ef2970..56edb9229 100644
--- a/src/usr/hwpf/hwp/edi_ei_initialization/proc_fab_iovalid/proc_fab_iovalid.C
+++ b/src/usr/hwpf/hwp/edi_ei_initialization/proc_fab_iovalid/proc_fab_iovalid.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* COPYRIGHT International Business Machines Corp. 2012,2014 */
/* */
/* p1 */
/* */
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_fab_iovalid.C,v 1.14 2013/12/13 16:03:40 jmcgill Exp $
+// $Id: proc_fab_iovalid.C,v 1.15 2014/02/12 18:55:11 jmcgill Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_fab_iovalid.C,v $
//------------------------------------------------------------------------------
// *|
@@ -220,72 +220,66 @@ fapi::ReturnCode proc_fab_iovalid_manage_a_links(
do
{
- // do not attempt to drop secure iovalid
- // running on FSP (stopclocks), this code will be unable to adjust this register
- // clearing the GP0 settings should be sufficient to drop the downstream iovalids
- if (i_set_not_clear)
+ // query secure iovalid attribute, used to qualify iovalid set only
+ rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_SECURE_IOVALID_PRESENT,
+ &(i_proc_chip.this_chip),
+ secure_iovalid_present_attr);
+ if (!rc.ok())
{
- // query secure iovalid attribute
- rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_SECURE_IOVALID_PRESENT,
- &(i_proc_chip.this_chip),
- secure_iovalid_present_attr);
- if (!rc.ok())
- {
- FAPI_ERR("proc_fab_iovalid_manage_a_links: Error querying ATTR_CHIP_EC_FEATURE_SECURE_IOVALID_PRESENT");
- break;
- }
+ FAPI_ERR("proc_fab_iovalid_manage_a_links: Error querying ATTR_CHIP_EC_FEATURE_SECURE_IOVALID_PRESENT");
+ break;
+ }
- if (i_proc_chip.a0)
+ if (i_proc_chip.a0)
+ {
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A0 to active link mask");
+ rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A0_IOVALID_BIT);
+ if (secure_iovalid_present_attr && i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A0 to active link mask");
- rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A0_IOVALID_BIT);
- if (secure_iovalid_present_attr)
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A0 to active link mask (secure)");
+ if (i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A0 to active link mask (secure)");
- if (i_set_not_clear)
- {
- rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A0_IOVALID_BIT);
- }
- rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A0_IOVALID_BIT);
+ rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A0_IOVALID_BIT);
}
+ rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A0_IOVALID_BIT);
}
- if (i_proc_chip.a1)
+ }
+ if (i_proc_chip.a1)
+ {
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A1 to active link mask");
+ rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A1_IOVALID_BIT);
+ if (secure_iovalid_present_attr && i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A1 to active link mask");
- rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A1_IOVALID_BIT);
- if (secure_iovalid_present_attr)
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A1 to active link mask (secure)");
+ if (i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A1 to active link mask (secure)");
- if (i_set_not_clear)
- {
- rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A1_IOVALID_BIT);
- }
- rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A1_IOVALID_BIT);
+ rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A1_IOVALID_BIT);
}
+ rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A1_IOVALID_BIT);
}
- if (i_proc_chip.a2)
+ }
+ if (i_proc_chip.a2)
+ {
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A2 to active link mask");
+ rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A2_IOVALID_BIT);
+ if (secure_iovalid_present_attr && i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A2 to active link mask");
- rc_ecmd |= gp0_iovalid_active.setBit(A_GP0_A2_IOVALID_BIT);
- if (secure_iovalid_present_attr)
+ FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A2 to active link mask (secure)");
+ if (i_set_not_clear)
{
- FAPI_DBG("proc_fab_iovalid_manage_a_links: Adding link A2 to active link mask (secure)");
- if (i_set_not_clear)
- {
- rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A2_IOVALID_BIT);
- }
- rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A2_IOVALID_BIT);
+ rc_ecmd |= secure_iovalid_data.setBit(ADU_IOS_LINK_EN_A2_IOVALID_BIT);
}
+ rc_ecmd |= secure_iovalid_mask.setBit(ADU_IOS_LINK_EN_A2_IOVALID_BIT);
}
-
- // check aggregate return code from buffer manipulation operations
- if (rc_ecmd)
- {
- FAPI_ERR("proc_fab_iovalid_manage_a_links: Error 0x%x setting up active link mask data buffersa",
- rc_ecmd);
- rc.setEcmdError(rc_ecmd);
- break;
- }
+ }
+
+ // check aggregate return code from buffer manipulation operations
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_fab_iovalid_manage_a_links: Error 0x%x setting up active link mask data buffersa",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
}
// write appropriate GP0 mask register to perform desired operation
@@ -300,7 +294,10 @@ fapi::ReturnCode proc_fab_iovalid_manage_a_links(
break;
}
- // adjust secure iovalids if present
+ // manage secure iovalids if present
+ // do not attempt to drop secure iovalid
+ // running on FSP (stopclocks), this code will be unable to adjust this register
+ // clearing the GP0 settings should be sufficient to drop the downstream iovalids
if (secure_iovalid_present_attr && i_set_not_clear)
{
rc = fapiPutScomUnderMask(i_proc_chip.this_chip,
OpenPOWER on IntegriCloud