]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
UefiCpuPkg: Fix SMM code hangs when InitPaging
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / SmmProfile.c
index c1efda7126054686df242199a45b6aafac65db20..1b0b6673e181ab4e663021e9c6c62340326d0760 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Enable SMM profile.\r
 \r
-Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2012 - 2023, Intel Corporation. All rights reserved.<BR>\r
 Copyright (c) 2017 - 2020, AMD Incorporated. All rights reserved.<BR>\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -587,13 +587,18 @@ InitPaging (
     }\r
 \r
     SizeOfMemorySpace = HighBitSet64 (gPhyMask) + 1;\r
+    ASSERT (SizeOfMemorySpace <= 52);\r
+\r
     //\r
-    // Calculate the table entries of PML4E and PDPTE.\r
+    // Calculate the table entries of PML5E, PML4E and PDPTE.\r
     //\r
     NumberOfPml5Entries = 1;\r
     if (SizeOfMemorySpace > 48) {\r
-      NumberOfPml5Entries = (UINTN)LShiftU64 (1, SizeOfMemorySpace - 48);\r
-      SizeOfMemorySpace   = 48;\r
+      if (Enable5LevelPaging) {\r
+        NumberOfPml5Entries = (UINTN)LShiftU64 (1, SizeOfMemorySpace - 48);\r
+      }\r
+\r
+      SizeOfMemorySpace = 48;\r
     }\r
 \r
     NumberOfPml4Entries = 1;\r