From 74f90d38c446e247469e2a775970eeed89216909 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 21 May 2020 00:58:41 +0200 Subject: OvmfPkg/Tcg2ConfigPei: skip TPM-1.2 detection when building for ARM/AARCH64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dating back to commits f5cb3767038e and ddd34a818315d, the "ArmVirtPkg/ArmVirtQemu.dsc" platform includes the "OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf" module when the TPM2_ENABLE build flag is defined. This was regressed in commit 89236992913f, which added a Tpm12DeviceLib dependency to Tcg2ConfigPei. "ArmVirtQemu.dsc" does not resolve that class to any instance, so now we get a build failure: > build.py... > ArmVirtPkg/ArmVirtQemu.dsc(...): error 4000: Instance of library class > [Tpm12DeviceLib] is not found > in [OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf] [AARCH64] > consumed by module [OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf] The TPM-1.2 code in OvmfPkg/Tcg2ConfigPei is limited to a special use case (a kind of physical TPM-1.2 assignment), and that has never applied to "ArmVirtQemu.dsc". Short-circuit the TPM-1.2 detection in the ARM/AARCH64 builds of OvmfPkg/Tcg2ConfigPei, removing the Tpm12DeviceLib dependency. Functionally, this patch is a no-op on IA32 / X64. Cc: Ard Biesheuvel Cc: Eric Auger Cc: Jordan Justen Cc: Marc-André Lureau Cc: Philippe Mathieu-Daudé Cc: Simon Hardy Cc: Stefan Berger Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2728 Signed-off-by: Laszlo Ersek Message-Id: <20200520225841.17793-4-lersek@redhat.com> Reviewed-by: Ard Biesheuvel Tested-by: Ard Biesheuvel --- OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf | 11 +++++++++-- OvmfPkg/Tcg/Tcg2Config/Tpm12Support.h | 4 ++++ OvmfPkg/Tcg/Tcg2Config/Tpm12SupportNull.c | 25 +++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 OvmfPkg/Tcg/Tcg2Config/Tpm12SupportNull.c (limited to 'OvmfPkg/Tcg') diff --git a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf b/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf index aa996b7da7..194ebfba64 100644 --- a/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf +++ b/OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf @@ -21,9 +21,14 @@ [Sources] Tcg2ConfigPeim.c - Tpm12Support.c Tpm12Support.h +[Sources.IA32, Sources.X64] + Tpm12Support.c + +[Sources.ARM, Sources.AARCH64] + Tpm12SupportNull.c + [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec @@ -35,9 +40,11 @@ BaseLib DebugLib PeiServicesLib - Tpm12DeviceLib Tpm2DeviceLib +[LibraryClasses.IA32, LibraryClasses.X64] + Tpm12DeviceLib + [Guids] gEfiTpmDeviceSelectedGuid ## PRODUCES ## GUID # Used as a PPI GUID gEfiTpmDeviceInstanceTpm20DtpmGuid ## SOMETIMES_CONSUMES diff --git a/OvmfPkg/Tcg/Tcg2Config/Tpm12Support.h b/OvmfPkg/Tcg/Tcg2Config/Tpm12Support.h index c739775d23..d92c432530 100644 --- a/OvmfPkg/Tcg/Tcg2Config/Tpm12Support.h +++ b/OvmfPkg/Tcg/Tcg2Config/Tpm12Support.h @@ -15,6 +15,10 @@ /** Detect the presence of a TPM with interface version 1.2. + @retval EFI_UNSUPPORTED The platform that includes this particular + implementation of the function does not support + TPM-1.2. + @retval EFI_SUCCESS TPM-1.2 available. The Tpm12RequestUseTpm() and Tpm12SubmitCommand(TPM_ORD_GetTicks) operations (from the Tpm12DeviceLib class) have succeeded. diff --git a/OvmfPkg/Tcg/Tcg2Config/Tpm12SupportNull.c b/OvmfPkg/Tcg/Tcg2Config/Tpm12SupportNull.c new file mode 100644 index 0000000000..7bb377b9b9 --- /dev/null +++ b/OvmfPkg/Tcg/Tcg2Config/Tpm12SupportNull.c @@ -0,0 +1,25 @@ +/** @file + Null implementation of InternalTpm12Detect(), always returning + EFI_UNSUPPORTED. + + Copyright (C) 2020, Red Hat, Inc. + + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include "Tpm12Support.h" + +/** + Detect the presence of a TPM with interface version 1.2. + + @retval EFI_UNSUPPORTED The platform that includes this particular + implementation of the function does not support + TPM-1.2. +**/ +EFI_STATUS +InternalTpm12Detect ( + VOID + ) +{ + return EFI_UNSUPPORTED; +} -- cgit v1.2.3