diff options
author | Joe McGill <jmcgill@us.ibm.com> | 2018-01-11 16:15:29 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-01-13 14:04:23 -0500 |
commit | 02e505b4c437fbf21b39f29c005c934137ad0c6a (patch) | |
tree | 0be5865150a75638f73cd80ae068d746abbfc790 | |
parent | 15569e9de5a894884968a4cb284d90659874357f (diff) | |
download | talos-hostboot-02e505b4c437fbf21b39f29c005c934137ad0c6a.tar.gz talos-hostboot-02e505b4c437fbf21b39f29c005c934137ad0c6a.zip |
p9_fab_iovalid -- secure ABUS mailboxes after iovalid is asserted
Setting ABUS_LOCK in security switch register will
return all zero data on future reads to secure mailboxes
(even half-link, mbox 0)
Change-Id: I6c661839b8661e073ba0e16ce594843e60355f85
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/51820
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r-- | src/import/chips/p9/procedures/hwp/nest/p9_fab_iovalid.C | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_fab_iovalid.C b/src/import/chips/p9/procedures/hwp/nest/p9_fab_iovalid.C index 4dad8bea9..6344f4df7 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_fab_iovalid.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_fab_iovalid.C @@ -951,6 +951,26 @@ p9_fab_iovalid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_PROC_FABRIC_A_LINK_DELAY, i_target, l_a_agg_link_delay), "Error from FAPI_ATTR_GET (ATTR_PROC_FABRIC_A_LINK_DELAY"); + // lock down secure ABUS mailboxes (even half link, mailbox 0), future + // read accessses will return 0 + if (i_set_not_clear && + i_manage_optical) + { + fapi2::buffer<uint64_t> l_security_switch; + + FAPI_TRY(fapi2::getScom(i_target, + PU_SECURITY_SWITCH_REGISTER_SCOM, + l_security_switch), + "Error from getScom (PU_SECURITY_SWITCH_REGISTER_SCOM)"); + + l_security_switch.setBit<PU_SECURITY_SWITCH_REGISTER_ABUS_LOCK>(); + + FAPI_TRY(fapi2::putScom(i_target, + PU_SECURITY_SWITCH_REGISTER_SCOM, + l_security_switch), + "Error from getScom (PU_SECURITY_SWITCH_REGISTER_SCOM)"); + } + fapi_try_exit: FAPI_INF("End"); return fapi2::current_err; |