From: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
To: svt-core@virtuozzo.com
Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org
Subject: [PATCH edk2 hci-8.1] OvmfPkg/PlatformInitLib: switch to 5-level paging only above 16TB #VSTOR-152672 #VSTOR-152405
Date: Mon, 2 Nov 2026 17:25:20 +0200 [thread overview]
Message-ID: <20261102152520.61693-1-andrey.drobyshev@virtuozzo.com> (raw)
With PcdUse5LevelPageTable the 64-bit PEI decides per guest whether to
hand the OS over in 4- or 5-level paging mode. Without a fw_cfg
override it uses 5-level paging as soon as the guest address space
(RAM plus the memory hotplug window) reaches 1TB.
That threshold is too low for us:
* 4-level firmware paging already covers 64TB of address space, so
5-level paging below that buys nothing and only changes what the OS
sees at ExitBootServices;
* on Windows that means booting the LA57 kernel (ntkrla57.exe), which
bugchecks on AMD guests exposed to the ARCH_CAPABILITIES MSR
(VSTOR-152405) and breaks Windows Setup. QEMU since the commit
7fc0e1c9f577 ("i386: hide la57 at fresh start on vz machine types
that show ARCH_CAPABILITIES #VSTOR-152405") now hides la57 on the
VZ machine types that expose the MSR, but the firmware shouldn't
depend on that.
Raise the threshold to 16TB. Ordinary guests, including those with a
large hotplug window, stay in 4-level paging.
Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
---
OvmfPkg/Library/PlatformInitLib/MemDetect.c | 6 +++---
OvmfPkg/RUNTIME_CONFIG.md | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
index 937e2b77a5..7220db8ef9 100644
--- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
+++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
@@ -967,7 +967,7 @@ Switch4Level (
Should that not be the case the function checks the size of the address space
needed, which is the RAM installed plus fw_cfg reservations. The downgrade
to 4-level paging will happen for small guests where the address space needed
- is lower than 1TB.
+ is lower than 16TB.
This function will also log the paging level used and the reason for that.
@@ -1002,9 +1002,9 @@ PlatformSetupPagingLevel (
);
switch (Status) {
case EFI_NOT_FOUND:
- if (PlatformInfoHob->FirstNonAddress < (1ll << 40)) {
+ if (PlatformInfoHob->FirstNonAddress < (1ll << 44)) {
//
- // If the highest address actually used is below 1TB switch back into
+ // If the highest address actually used is below 16TB switch back into
// 4-level paging mode for better compatibility with older guests.
//
DEBUG ((DEBUG_INFO, "%a: using 4-level paging (default for small guest)\n", __func__));
diff --git a/OvmfPkg/RUNTIME_CONFIG.md b/OvmfPkg/RUNTIME_CONFIG.md
index b75a5dacad..3bef1e6e4a 100644
--- a/OvmfPkg/RUNTIME_CONFIG.md
+++ b/OvmfPkg/RUNTIME_CONFIG.md
@@ -228,7 +228,7 @@ paging levels are better for compatibility, not all OSes can handle
levels are better for huge VMs, the address space managed by OVMF can
be larger.
-Default: Use 5-level paging in case more than 1TB of memory is
+Default: Use 5-level paging in case more than 16TB of memory is
present, 4-level paging otherwise.
Usage:
--
2.47.1
next reply other threads:[~2026-11-02 15:25 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 15:25 Andrey Drobyshev [this message]
2026-11-02 15:44 ` Denis V. Lunev
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-all 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=20261102152520.61693-1-andrey.drobyshev@virtuozzo.com \
--to=andrey.drobyshev@virtuozzo.com \
--cc=den@openvz.org \
--cc=svt-core@virtuozzo.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.