OvmfPkg/PlatformPei: Refactor NoexecDxeInitialization

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3863

NoexecDxeInitialization is split into 2 functions:
 - PlatformNoexecDxeInitialization is for PlatformInitLib
 - NoexecDxeInitialization calls PlatformNoexecDxeInitialization and
   then sets PCD.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jordan Justen <jordan.l.justen@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>
Cc: Sebastien Boeuf <sebastien.boeuf@intel.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:
Min Xu 2022-03-06 22:20:22 +08:00 committed by mergify[bot]
parent 12e860a1e8
commit cec82a64cf

View File

@ -59,7 +59,6 @@ PlatformMemMapInitialization (
{ {
UINT64 PciIoBase; UINT64 PciIoBase;
UINT64 PciIoSize; UINT64 PciIoSize;
RETURN_STATUS PcdStatus;
UINT32 TopOfLowRam; UINT32 TopOfLowRam;
UINT64 PciExBarBase; UINT64 PciExBarBase;
UINT32 PciBase; UINT32 PciBase;
@ -199,24 +198,33 @@ MemMapInitialization (
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
} }
#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName) \ /**
do { \ * Fetch "opt/ovmf/PcdSetNxForStack" from QEMU
BOOLEAN Setting; \ *
RETURN_STATUS PcdStatus; \ * @param Setting The pointer to the setting of "/opt/ovmf/PcdSetNxForStack".
\ * @return EFI_SUCCESS Successfully fetch the settings.
if (!RETURN_ERROR (QemuFwCfgParseBool ( \ */
"opt/ovmf/" #TokenName, &Setting))) { \ EFI_STATUS
PcdStatus = PcdSetBoolS (TokenName, Setting); \ EFIAPI
ASSERT_RETURN_ERROR (PcdStatus); \ PlatformNoexecDxeInitialization (
} \ IN OUT EFI_HOB_PLATFORM_INFO *PlatformInfoHob
} while (0) )
{
return QemuFwCfgParseBool ("opt/ovmf/PcdSetNxForStack", &PlatformInfoHob->PcdSetNxForStack);
}
VOID VOID
NoexecDxeInitialization ( NoexecDxeInitialization (
VOID VOID
) )
{ {
UPDATE_BOOLEAN_PCD_FROM_FW_CFG (PcdSetNxForStack); RETURN_STATUS Status;
Status = PlatformNoexecDxeInitialization (&mPlatformInfoHob);
if (!RETURN_ERROR (Status)) {
Status = PcdSetBoolS (PcdSetNxForStack, mPlatformInfoHob.PcdSetNxForStack);
ASSERT_RETURN_ERROR (Status);
}
} }
VOID VOID