From: "Gerd Hoffmann" <kraxel@redhat.com>
To: devel@edk2.groups.io
Cc: "Liming Gao" <gaoliming@byosoft.com.cn>,
"László Érsek" <lersek@redhat.com>,
"Oliver Steffen" <osteffen@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>
Subject: [edk2-devel] [PATCH v2 2/2] MdeModulePkg/VirtualMemory: fix 5-level paging assert
Date: Thu, 25 Jan 2024 09:20:57 +0100 [thread overview]
Message-ID: <20240125082057.309133-3-kraxel@redhat.com> (raw)
In-Reply-To: <20240125082057.309133-1-kraxel@redhat.com>
The ResetVector decides at runtime (depending on CPU capabilities)
whenever it uses 5-level paging or not. Firmware builds with 5-level
paging enabled (PcdEnable5LevelPageTable=TRUE) may run run in 4-level
paging mode. The code handles that just fine, by looking at the la57
bit in cr4 instead of checking PcdEnable5LevelPageTable.
So the ASSERT is too strict. Change it to ensure the build was
configured with PcdEnable5LevelPageTable=TRUE when running in 5-level
paging mode.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c
index 46528e4f719d..9e194ef8cc55 100644
--- a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c
+++ b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c
@@ -745,7 +745,9 @@ CreateIdentityMappingPageTables (
//
Cr4.UintN = AsmReadCr4 ();
Page5LevelSupport = (Cr4.Bits.LA57 != 0);
- ASSERT (PcdGetBool (PcdEnable5LevelPageTable) == Page5LevelSupport);
+ if (Page5LevelSupport) {
+ ASSERT (PcdGetBool (PcdEnable5LevelPageTable));
+ }
} else {
//
// If cpu runs in 32bit protected mode PEI, Page table Level in DXE is decided by PCD and feature capability.
--
2.43.0
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#114375): https://edk2.groups.io/g/devel/message/114375
Mute This Topic: https://groups.io/mt/103950406/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-01-25 8:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-25 8:20 [edk2-devel] [PATCH v2 0/2] MdeModulePkg: 5-level paging fixes Gerd Hoffmann
2024-01-25 8:20 ` [edk2-devel] [PATCH v2 1/2] MdeModulePkg: rename PcdUse5LevelPageTable to PcdEnable5LevelPageTable Gerd Hoffmann
2024-01-25 12:01 ` Ni, Ray
2024-01-25 12:17 ` Gerd Hoffmann
2024-01-26 2:49 ` Zhiguang Liu
2024-01-26 13:19 ` Gerd Hoffmann
2024-01-25 8:20 ` Gerd Hoffmann [this message]
2024-01-25 23:22 ` [edk2-devel] [PATCH v2 0/2] MdeModulePkg: 5-level paging fixes Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240125082057.309133-3-kraxel@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox