mirror of
https://git.proxmox.com/git/pve-edk2-firmware
synced 2025-10-04 11:44:11 +00:00
add patch to work around older guest kernel bug
by limiting the phys-bits to 46 instead of 47. On Ubuntu 18.04 with kernel 4.15, using 47 leads to a strange issue where initialization of VirtIO devices would fail. Reported in the community forum: https://forum.proxmox.com/threads/127410/ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
f9d3c7f9b1
commit
c252b4e501
46
debian/patches/0001-OvmfPkg-PlatformInitLib-limit-phys-bits-to-46.patch
vendored
Normal file
46
debian/patches/0001-OvmfPkg-PlatformInitLib-limit-phys-bits-to-46.patch
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
From 89a12f2a42b989e7925b4a71e503209971eaa271 Mon Sep 17 00:00:00 2001
|
||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Date: Thu, 1 Jun 2023 09:57:31 +0200
|
||||
Subject: [PATCH] OvmfPkg/PlatformInitLib: limit phys-bits to 46.
|
||||
|
||||
Older linux kernels have problems with phys-bits larger than 46,
|
||||
ubuntu 18.04 (kernel 4.15) has been reported to be affected.
|
||||
|
||||
Reduce phys-bits limit from 47 to 46.
|
||||
|
||||
Reported-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||
---
|
||||
OvmfPkg/Library/PlatformInitLib/MemDetect.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
|
||||
index 38cece9173..4d0522ce22 100644
|
||||
--- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
|
||||
+++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
|
||||
@@ -657,16 +657,19 @@ PlatformAddressWidthFromCpuid (
|
||||
));
|
||||
|
||||
if (Valid) {
|
||||
- if (PhysBits > 47) {
|
||||
+ if (PhysBits > 46) {
|
||||
/*
|
||||
* Avoid 5-level paging altogether for now, which limits
|
||||
* PhysBits to 48. Also avoid using address bit 48, due to sign
|
||||
* extension we can't identity-map these addresses (and lots of
|
||||
* places in edk2 assume we have everything identity-mapped).
|
||||
* So the actual limit is 47.
|
||||
+ *
|
||||
+ * Also some older linux kernels apparently have problems handling
|
||||
+ * phys-bits > 46 correctly, so use that as limit.
|
||||
*/
|
||||
- DEBUG ((DEBUG_INFO, "%a: limit PhysBits to 47 (avoid 5-level paging)\n", __func__));
|
||||
- PhysBits = 47;
|
||||
+ DEBUG ((DEBUG_INFO, "%a: limit PhysBits to 46 (avoid 5-level paging)\n", __func__));
|
||||
+ PhysBits = 46;
|
||||
}
|
||||
|
||||
if (!Page1GSupport && (PhysBits > 40)) {
|
||||
--
|
||||
2.39.2
|
||||
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -2,3 +2,4 @@ no-stack-protector-all-archs.diff
|
||||
brotlicompress-disable.diff
|
||||
x64-baseline-abi.patch
|
||||
Revert-ArmVirtPkg-make-EFI_LOADER_DATA-non-executabl.patch
|
||||
0001-OvmfPkg-PlatformInitLib-limit-phys-bits-to-46.patch
|
||||
|
Loading…
Reference in New Issue
Block a user