]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg/PiSmmCpu: Check XdSupport before set NX.
authorJiewen Yao <jiewen.yao@intel.com>
Thu, 17 Nov 2016 13:32:25 +0000 (21:32 +0800)
committerJiewen Yao <jiewen.yao@intel.com>
Fri, 18 Nov 2016 02:53:59 +0000 (10:53 +0800)
When XD is not supported, the BIT63 is reserved.
We should not set BIT63 in the page table.

Test OVMF IA32/IA32X64 with XD enabled/disabled.

Analyzed-by: Laszlo Ersek <lersek@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>
UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c

index b4f8861607ee1ab3dc1cd2dc5a8af55bfc414d23..c85e025424218b75f041aa112f7c2c3b756dbb6f 100644 (file)
@@ -209,10 +209,12 @@ ConvertPageEntryAttribute (
     }\r
   }\r
   if ((Attributes & EFI_MEMORY_XP) != 0) {\r
-    if (IsSet) {\r
-      NewPageEntry |= IA32_PG_NX;\r
-    } else {\r
-      NewPageEntry &= ~IA32_PG_NX;\r
+    if (mXdSupported) {\r
+      if (IsSet) {\r
+        NewPageEntry |= IA32_PG_NX;\r
+      } else {\r
+        NewPageEntry &= ~IA32_PG_NX;\r
+      }\r
     }\r
   }\r
   *PageEntry = NewPageEntry;\r