:: commit f8840eae87ee8054361f446201eaa2dcd446ffa3

mintsuki <mintsuki@protonmail.com> — 2024-07-21 01:46

parents: a7742e0478

vmm/aarch64: Fix paging_mode_va_bits() and paging_mode_higher_half() for 5-level paging

diff --git a/common/mm/vmm.h b/common/mm/vmm.h
index 6d27e8dc..f3ef4d38 100644
--- a/common/mm/vmm.h
+++ b/common/mm/vmm.h
@@ -58,11 +58,11 @@ void map_page(pagemap_t pagemap, uint64_t virt_addr, uint64_t phys_addr, uint64_
 #define PAGING_MODE_MIN PAGING_MODE_AARCH64_4LVL
 #define PAGING_MODE_MAX PAGING_MODE_AARCH64_5LVL
 
-#define paging_mode_va_bits(mode) ((mode) ? 52 : 48)
+#define paging_mode_va_bits(mode) ((mode) ? 53 : 48)
 
 static inline uint64_t paging_mode_higher_half(int paging_mode) {
     if (paging_mode == PAGING_MODE_AARCH64_5LVL) {
-        return 0xffc0000000000000;
+        return 0xffe0000000000000;
     } else {
         return 0xffff000000000000;
     }
tab: 248 wrap: offon