OvmfPkg: Add PrePiHobListPointerLibTdx
RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429 This library sets / gets the Hob list pointer in TDX_WORK_AREA. This is because it is designed to be used in SEC where the value of global variable cannot be saved, so the Hob list pointer is saved in TDX_WORK_AREA. TDX_WORK_AREA shares the same base address as SEV_WORK_AREA which is pointed by PcdSevEsWorkAreaBase. This PCD will be renamed to PcdCcWorkAreaBase as Gerd suggested. See https://edk2.groups.io/g/devel/message/86642 Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Erdem Aktas <erdemaktas@google.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Gerd Hoffmann <kraxel@redhat.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>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
/** @file
|
||||
*
|
||||
* Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
|
||||
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
*
|
||||
**/
|
||||
|
||||
#include <PiPei.h>
|
||||
#include <Library/PrePiHobListPointerLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <WorkArea.h>
|
||||
|
||||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
|
||||
This function returns the pointer to first HOB in the list.
|
||||
|
||||
@return The pointer to the HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
PrePeiGetHobList (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
TDX_WORK_AREA *TdxWorkArea;
|
||||
|
||||
TdxWorkArea = (TDX_WORK_AREA *)(UINTN)FixedPcdGet32 (PcdSevEsWorkAreaBase);
|
||||
ASSERT (TdxWorkArea != NULL);
|
||||
ASSERT (TdxWorkArea->SecTdxWorkArea.HobList != 0);
|
||||
|
||||
return (VOID *)(UINTN)TdxWorkArea->SecTdxWorkArea.HobList;
|
||||
}
|
||||
|
||||
/**
|
||||
Updates the pointer to the HOB list.
|
||||
|
||||
@param HobList Hob list pointer to store
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PrePeiSetHobList (
|
||||
IN VOID *HobList
|
||||
)
|
||||
{
|
||||
TDX_WORK_AREA *TdxWorkArea;
|
||||
|
||||
TdxWorkArea = (TDX_WORK_AREA *)(UINTN)FixedPcdGet32 (PcdSevEsWorkAreaBase);
|
||||
ASSERT (TdxWorkArea != NULL);
|
||||
|
||||
TdxWorkArea->SecTdxWorkArea.HobList = (UINTN)HobList;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
Reference in New Issue
Block a user