--- 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
-
+ ));\r
+ \r
+ if (Valid) {\r
+- if (PhysBits > 47) {\r
++ if (PhysBits > 46) {\r
+ /*\r
+ * Avoid 5-level paging altogether for now, which limits\r
+ * PhysBits to 48. Also avoid using address bit 48, due to sign\r
+ * extension we can't identity-map these addresses (and lots of\r
+ * places in edk2 assume we have everything identity-mapped).\r
+ * So the actual limit is 47.\r
++ *\r
++ * Also some older linux kernels apparently have problems handling\r
++ * phys-bits > 46 correctly, so use that as limit.\r
+ */\r
+- DEBUG ((DEBUG_INFO, "%a: limit PhysBits to 47 (avoid 5-level paging)\n", __func__));\r
+- PhysBits = 47;\r
++ DEBUG ((DEBUG_INFO, "%a: limit PhysBits to 46 (avoid 5-level paging)\n", __func__));\r
++ PhysBits = 46;\r
+ }\r
+ \r
+ if (!Page1GSupport && (PhysBits > 40)) {\r