]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
UefiCpuPkg/PiSmmCpuDxeSmm: Use SMM Interrupt Shadow Stack
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / X64 / PageTbl.c
index d6f8dd94d3031ea87ec2344e4d2a23c9a9d03293..211a78b1c428c8b12b0923c2be1fc2979e1b5527 100644 (file)
@@ -481,7 +481,17 @@ SmmInitPageTable (
   // Additional SMM IDT initialization for SMM stack guard\r
   //\r
   if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
-    InitializeIDTSmmStackGuard ();\r
+    DEBUG ((DEBUG_INFO, "Initialize IDT IST field for SMM Stack Guard\n"));\r
+    InitializeIdtIst (EXCEPT_IA32_PAGE_FAULT, 1);\r
+  }\r
+\r
+  //\r
+  // Additional SMM IDT initialization for SMM CET shadow stack\r
+  //\r
+  if ((PcdGet32 (PcdControlFlowEnforcementPropertyMask) != 0) && mCetSupported) {\r
+    DEBUG ((DEBUG_INFO, "Initialize IDT IST field for SMM Shadow Stack\n"));\r
+    InitializeIdtIst (EXCEPT_IA32_PAGE_FAULT, 1);\r
+    InitializeIdtIst (EXCEPT_IA32_MACHINE_CHECK, 1);\r
   }\r
 \r
   //\r