diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2019-03-28 09:15:07 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2019-04-01 17:05:19 -0500 |
commit | ca03643dd8935f9c839cf8dfd4971c519476f4a1 (patch) | |
tree | 979a950125dbd7adc734b17979e3085a59f19e4d /src/usr/secureboot/trusted/base | |
parent | de2312a44b13b46a9dded3e60aeca6a13f8662de (diff) | |
download | talos-hostboot-ca03643dd8935f9c839cf8dfd4971c519476f4a1.tar.gz talos-hostboot-ca03643dd8935f9c839cf8dfd4971c519476f4a1.zip |
Initialize backup TPM in MPIPL
Update the boot flow to call the istep to initialize the backup TPM during an
MPIPL and carry over the backup present/functional state as they were from
runtime, prior to the MPIPL.
Change-Id: Ic402e37cf2f465686770ff22d4f2296332b0f3f7
CQ: SW456951
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/75163
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Ilya Smirnov <ismirno@us.ibm.com>
Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com>
Reviewed-by: Matthew Raybuck <matthew.raybuck@ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/secureboot/trusted/base')
-rw-r--r-- | src/usr/secureboot/trusted/base/trustedboot_base.C | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/usr/secureboot/trusted/base/trustedboot_base.C b/src/usr/secureboot/trusted/base/trustedboot_base.C index 9e78e08f5..7cb73b8bf 100644 --- a/src/usr/secureboot/trusted/base/trustedboot_base.C +++ b/src/usr/secureboot/trusted/base/trustedboot_base.C @@ -88,6 +88,24 @@ void getTPMs( TARGETING::TYPE_TPM, (i_filter == TPM_FILTER::ALL_IN_BLUEPRINT) ? false : true); + if(i_filter == TPM_FILTER::ALL_FUNCTIONAL) + { + // From functional TPMs, remove any TPMs that are not actually + // initialized. This prevents Hostboot from using the backup TPM + // in an MPIPL when it's considered "functional" but hasn't been + // initialized yet. + o_tpmList.erase( + std::remove_if( + o_tpmList.begin(), + o_tpmList.end(), + [](TARGETING::Target* i_pTpm) + { + return !i_pTpm->getAttr< + TARGETING::ATTR_HB_TPM_INIT_ATTEMPTED>(); + }), + o_tpmList.end()); + } + TRACUCOMP(g_trac_trustedboot,EXIT_MRK "getTPMs(): Found %d TPMs", o_tpmList.size()); } |