OvmfPkg/Tcg2ConfigPei: skip TPM-1.2 detection when building for ARM/AARCH64

Dating back to commits f5cb376703 and ddd34a8183, 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 8923699291, 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 <ard.biesheuvel@arm.com>
Cc: Eric Auger <eric.auger@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Cc: Simon Hardy <simon.hardy@itdev.co.uk>
Cc: Stefan Berger <stefanb@linux.ibm.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2728
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20200520225841.17793-4-lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
Tested-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
This commit is contained in:
Laszlo Ersek 2020-05-21 00:58:41 +02:00 committed by mergify[bot]
parent fc72a6ceaa
commit 74f90d38c4
3 changed files with 38 additions and 2 deletions

View File

@ -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

View File

@ -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.

View File

@ -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;
}