From 6e3c834ae47d1201c4ddcc6a6adc5e44718c7617 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Tue, 7 Apr 2020 02:34:22 +0800 Subject: [PATCH] SecurityPkg Tcg: Use SW SMI IO port PCD in Tpm.asl REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2416 Replaces the hardcoded value of 0xB2 with a PCD for the SMI port access operation region. This allows platforms to customize the IO port value if necessary. Cc: Kun Qin Cc: Jian J Wang Cc: Jiewen Yao Cc: Chao Zhang Signed-off-by: Michael Kubacki Reviewed-by: Guomin Jiang Reviewed-by: Bret Barkelew --- SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf | 4 ++++ SecurityPkg/Tcg/Tcg2Smm/Tpm.asl | 18 +++++++++--------- SecurityPkg/Tcg/TcgSmm/TcgSmm.inf | 4 ++++ SecurityPkg/Tcg/TcgSmm/Tpm.asl | 17 +++++++++-------- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf index e33cbcc491..2ebf2e05f2 100644 --- a/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf +++ b/SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf @@ -21,6 +21,7 @@ # This external input must be validated carefully to avoid security issue. # # Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -70,6 +71,9 @@ gEfiSmmVariableProtocolGuid ## CONSUMES gEfiAcpiTableProtocolGuid ## CONSUMES +[FixedPcd] + gEfiSecurityPkgTokenSpaceGuid.PcdSmiCommandIoPort ## CONSUMES + [Pcd] gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId ## SOMETIMES_CONSUMES diff --git a/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl b/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl index 7a91708a1a..95f9d7eae8 100644 --- a/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl +++ b/SecurityPkg/Tcg/Tcg2Smm/Tpm.asl @@ -4,7 +4,7 @@ Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
(c)Copyright 2016 HP Development Company, L.P.
-Copyright (c) 2017, Microsoft Corporation. All rights reserved.
+Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -41,10 +41,10 @@ DefinitionBlock ( // // Operational region for Smi port access // - OperationRegion (SMIP, SystemIO, 0xB2, 1) + OperationRegion (SMIP, SystemIO, FixedPcdGet16 (PcdSmiCommandIoPort), 1) Field (SMIP, ByteAcc, NoLock, Preserve) { - IOB2, 8 + IOPN, 8 } // @@ -258,7 +258,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (MCIN, IOB2) + Store (MCIN, IOPN) } } Return (0) @@ -359,7 +359,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) @@ -390,7 +390,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Store (LPPR, Index (TPM3, 0x01)) Store (PPRP, Index (TPM3, 0x02)) @@ -422,7 +422,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) } Case (8) @@ -436,7 +436,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) } @@ -475,7 +475,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (MCIN, IOB2) + Store (MCIN, IOPN) Return (MRET) } Default {BreakPoint} diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf b/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf index 29f9c15b0e..9fac896dde 100644 --- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf +++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf @@ -10,6 +10,7 @@ # This external input must be validated carefully to avoid security issue. # # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -63,6 +64,9 @@ gEfiSmmVariableProtocolGuid ## CONSUMES gEfiAcpiTableProtocolGuid ## CONSUMES +[FixedPcd] + gEfiSecurityPkgTokenSpaceGuid.PcdSmiCommandIoPort ## CONSUMES + [Pcd] gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId ## SOMETIMES_CONSUMES diff --git a/SecurityPkg/Tcg/TcgSmm/Tpm.asl b/SecurityPkg/Tcg/TcgSmm/Tpm.asl index 739067dbec..9d5e6ddc11 100644 --- a/SecurityPkg/Tcg/TcgSmm/Tpm.asl +++ b/SecurityPkg/Tcg/TcgSmm/Tpm.asl @@ -3,6 +3,7 @@ and MemoryClear. Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
+Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -41,10 +42,10 @@ DefinitionBlock ( // // Operational region for Smi port access // - OperationRegion (SMIP, SystemIO, 0xB2, 1) + OperationRegion (SMIP, SystemIO, FixedPcdGet16 (PcdSmiCommandIoPort), 1) Field (SMIP, ByteAcc, NoLock, Preserve) { - IOB2, 8 + IOPN, 8 } // @@ -96,7 +97,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (MCIN, IOB2) + Store (MCIN, IOPN) } } Return (0) @@ -196,7 +197,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) @@ -227,7 +228,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Store (LPPR, Index (TPM3, 0x01)) Store (PPRP, Index (TPM3, 0x02)) @@ -255,7 +256,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) } Case (8) @@ -269,7 +270,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (PPIN, IOB2) + Store (PPIN, IOPN) Return (FRET) } @@ -308,7 +309,7 @@ DefinitionBlock ( // // Trigger the SMI interrupt // - Store (MCIN, IOB2) + Store (MCIN, IOPN) Return (MRET) } Default {BreakPoint} -- 2.39.2