diff options
author | Thi Tran <thi@us.ibm.com> | 2014-02-20 08:59:45 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-27 11:45:05 -0600 |
commit | ea2e98ff9d1963d75fc448d18d2880950af1fa5f (patch) | |
tree | 53506f0179edd252eb3800089dd97d86831acb11 /src/usr/hwpf/hwp/edi_ei_initialization | |
parent | 941d3e56f1f933dba3f98c3f82fae0561a5201e7 (diff) | |
download | talos-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.C | 107 |
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, |