Files
system76-edk2/OvmfPkg/Library/PeilessStartupLib/PeilessStartupInternal.h
Min M Xu f41acc651f OvmfPkg: Refactor MeasureHobList
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4243

MeasureHobList once was implemented in PeilessStartupLib and it does
measurement and logging for TdHob in one go, using TpmMeasureAndLogData().
But it doesn't work in SEC.

This patch splits MeasureHobList into 2 functions and implement them in
SecTdxHelperLib.
 - TdxHelperMeasureTdHob
 - TdxHelperBuildGuidHobForTdxMeasurement

TdxHelperMeasureTdHob measures the TdHob and stores the hash value in
WorkArea. TdxHelperBuildGuidHobForTdxMeasurement builds GuidHob for the
measurement based on the hash value in WorkArea.

After these 2 functions are introduced, PeilessStartupLib should also be
updated:
 - Call these 2 functions instead of the MeasureHobList
 - Delete the duplicated codes in PeilessStartupLib

Cc: Erdem Aktas <erdemaktas@google.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Michael Roth <michael.roth@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
2023-02-04 03:38:15 +00:00

83 lines
1.9 KiB
C

/** @file
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef PEILESS_STARTUP_INTERNAL_LIB_H_
#define PEILESS_STARTUP_INTERNAL_LIB_H_
#include <PiPei.h>
#include <Library/BaseLib.h>
#include <Uefi/UefiSpec.h>
#include <Uefi/UefiBaseType.h>
#include <IndustryStandard/IntelTdx.h>
EFI_STATUS
EFIAPI
DxeLoadCore (
IN INTN FvInstance
);
EFI_STATUS
EFIAPI
FindDxeNonCc (
IN INTN FvInstance
);
VOID
EFIAPI
TransferHobList (
IN CONST VOID *HobStart
);
/**
* This function is to find a memory region which is the largest one below 4GB.
* It will be used as the firmware hoblist.
*
* @param VmmHobList Vmm passed hoblist which constains the memory information.
* @return EFI_SUCCESS Successfully construct the firmware hoblist.
* @return EFI_NOT_FOUND Cannot find a memory region to be the fw hoblist.
*/
EFI_STATUS
EFIAPI
ConstructFwHobList (
IN CONST VOID *VmmHobList
);
/**
* Construct the HobList in SEC phase.
*
* @return EFI_SUCCESS Successfully construct the firmware hoblist.
* @return EFI_NOT_FOUND Cannot find a memory region to be the fw hoblist.
*/
EFI_STATUS
EFIAPI
ConstructSecHobList (
);
/**
Measure FV image.
@param[in] FvBase Base address of FV image.
@param[in] FvLength Length of FV image.
@param[in] PcrIndex Index of PCR
@retval EFI_SUCCESS Fv image is measured successfully
or it has been already measured.
@retval EFI_OUT_OF_RESOURCES No enough memory to log the new event.
@retval EFI_DEVICE_ERROR The command was unsuccessful.
**/
EFI_STATUS
EFIAPI
MeasureFvImage (
IN EFI_PHYSICAL_ADDRESS FvBase,
IN UINT64 FvLength,
IN UINT8 PcrIndex
);
#endif