IntelFsp2WrapperPkg/FspmWrapperPeim: Fix FspT/M address for measurement

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4716

Tcg module should use permanent address of FSP-T/M for measurement.
TCG notification checks MigatedFvInfoHob and transmits
DRAM address for measurement.

Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Duggapu Chinni B <chinni.b.duggapu@intel.com>
Cc: Chen Gang C <gang.c.chen@intel.com>

Signed-off-by: Zhihao Li <zhihao.li@intel.com>
This commit is contained in:
Zhihao Li 2024-04-29 09:43:25 +08:00 committed by mergify[bot]
parent 2d5390053f
commit 5c9b889b81
2 changed files with 33 additions and 8 deletions

View File

@ -3,7 +3,7 @@
register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
notify to call FspSiliconInit API. notify to call FspSiliconInit API.
Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.<BR> Copyright (c) 2014 - 2024, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
@ -38,6 +38,7 @@
#include <FspStatusCode.h> #include <FspStatusCode.h>
#include <FspGlobalData.h> #include <FspGlobalData.h>
#include <Library/FspCommonLib.h> #include <Library/FspCommonLib.h>
#include <Guid/MigratedFvInfo.h>
extern EFI_GUID gFspHobGuid; extern EFI_GUID gFspHobGuid;
@ -278,18 +279,41 @@ TcgPpiNotify (
IN VOID *Ppi IN VOID *Ppi
) )
{ {
UINT32 FspMeasureMask; UINT32 FspMeasureMask;
EFI_PHYSICAL_ADDRESS FsptBaseAddress;
EFI_PHYSICAL_ADDRESS FspmBaseAddress;
EDKII_MIGRATED_FV_INFO *MigratedFvInfo;
EFI_PEI_HOB_POINTERS Hob;
DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPM\n")); DEBUG ((DEBUG_INFO, "TcgPpiNotify FSPM\n"));
FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig); FspMeasureMask = PcdGet32 (PcdFspMeasurementConfig);
FsptBaseAddress = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFsptBaseAddress);
FspmBaseAddress = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFspmBaseAddress);
Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);
while (Hob.Raw != NULL) {
MigratedFvInfo = GET_GUID_HOB_DATA (Hob);
if ((MigratedFvInfo->FvOrgBase == PcdGet32 (PcdFsptBaseAddress)) && (MigratedFvInfo->FvDataBase != 0)) {
//
// Found the migrated FspT raw data
//
FsptBaseAddress = MigratedFvInfo->FvDataBase;
}
if ((MigratedFvInfo->FvOrgBase == PcdGet32 (PcdFspmBaseAddress)) && (MigratedFvInfo->FvDataBase != 0)) {
FspmBaseAddress = MigratedFvInfo->FvDataBase;
}
Hob.Raw = GET_NEXT_HOB (Hob);
Hob.Raw = GetNextGuidHob (&gEdkiiMigratedFvInfoGuid, Hob.Raw);
}
if ((FspMeasureMask & FSP_MEASURE_FSPT) != 0) { if ((FspMeasureMask & FSP_MEASURE_FSPT) != 0) {
MeasureFspFirmwareBlob ( MeasureFspFirmwareBlob (
0, 0,
"FSPT", "FSPT",
PcdGet32 (PcdFsptBaseAddress), FsptBaseAddress,
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFsptBaseAddress))->FvLength (UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FsptBaseAddress)->FvLength
); );
} }
@ -297,8 +321,8 @@ TcgPpiNotify (
MeasureFspFirmwareBlob ( MeasureFspFirmwareBlob (
0, 0,
"FSPM", "FSPM",
PcdGet32 (PcdFspmBaseAddress), FspmBaseAddress,
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PcdGet32 (PcdFspmBaseAddress))->FvLength (UINT32)((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FspmBaseAddress)->FvLength
); );
} }

View File

@ -6,7 +6,7 @@
# register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi # register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
# notify to call FspSiliconInit API. # notify to call FspSiliconInit API.
# #
# Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2014 - 2024, Intel Corporation. All rights reserved.<BR>
# #
# SPDX-License-Identifier: BSD-2-Clause-Patent # SPDX-License-Identifier: BSD-2-Clause-Patent
# #
@ -69,6 +69,7 @@
[Guids] [Guids]
gFspHobGuid ## PRODUCES ## HOB gFspHobGuid ## PRODUCES ## HOB
gFspApiPerformanceGuid ## SOMETIMES_CONSUMES ## GUID gFspApiPerformanceGuid ## SOMETIMES_CONSUMES ## GUID
gEdkiiMigratedFvInfoGuid ## SOMETIMES_CONSUMES ## HOB
[Ppis] [Ppis]
gEdkiiTcgPpiGuid ## NOTIFY gEdkiiTcgPpiGuid ## NOTIFY