diff options
author | Min Xu <min.m.xu@intel.com> | 2022-03-06 22:20:22 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-04-02 08:15:12 +0000 |
commit | cec82a64cfd40ca0858cdc7bfd57c4115716b639 (patch) | |
tree | 5e50635b379c04826bbac52c60fe8beb11524d0b /OvmfPkg | |
parent | 12e860a1e881b2fa997ebed17cc4918494a5f5fe (diff) | |
download | edk2-cec82a64cfd40ca0858cdc7bfd57c4115716b639.tar.gz edk2-cec82a64cfd40ca0858cdc7bfd57c4115716b639.tar.bz2 edk2-cec82a64cfd40ca0858cdc7bfd57c4115716b639.zip |
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>
Diffstat (limited to 'OvmfPkg')
-rw-r--r-- | OvmfPkg/PlatformPei/Platform.c | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c index b83bd75158..e91acca9f7 100644 --- a/OvmfPkg/PlatformPei/Platform.c +++ b/OvmfPkg/PlatformPei/Platform.c @@ -59,7 +59,6 @@ PlatformMemMapInitialization ( {
UINT64 PciIoBase;
UINT64 PciIoSize;
- RETURN_STATUS PcdStatus;
UINT32 TopOfLowRam;
UINT64 PciExBarBase;
UINT32 PciBase;
@@ -199,24 +198,33 @@ MemMapInitialization ( ASSERT_RETURN_ERROR (PcdStatus);
}
-#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName) \
- do { \
- BOOLEAN Setting; \
- RETURN_STATUS PcdStatus; \
- \
- if (!RETURN_ERROR (QemuFwCfgParseBool ( \
- "opt/ovmf/" #TokenName, &Setting))) { \
- PcdStatus = PcdSetBoolS (TokenName, Setting); \
- ASSERT_RETURN_ERROR (PcdStatus); \
- } \
- } while (0)
+/**
+ * Fetch "opt/ovmf/PcdSetNxForStack" from QEMU
+ *
+ * @param Setting The pointer to the setting of "/opt/ovmf/PcdSetNxForStack".
+ * @return EFI_SUCCESS Successfully fetch the settings.
+ */
+EFI_STATUS
+EFIAPI
+PlatformNoexecDxeInitialization (
+ IN OUT EFI_HOB_PLATFORM_INFO *PlatformInfoHob
+ )
+{
+ return QemuFwCfgParseBool ("opt/ovmf/PcdSetNxForStack", &PlatformInfoHob->PcdSetNxForStack);
+}
VOID
NoexecDxeInitialization (
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
|