]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
arch/x86: Align x86's paddr checks to arm64
authorKha Dinh <khadinh@g.skku.edu>
Tue, 3 Oct 2023 14:12:02 +0000 (14:12 +0000)
committerRazvan Deaconescu <razvand@unikraft.io>
Fri, 20 Oct 2023 16:35:55 +0000 (19:35 +0300)
This is also the correct implementation, e.g., maximum
possible 16-bit address is 0xFFFF, or `(1 << 16) - 1`.

Signed-off-by: Kha Dinh <khadinh@g.skku.edu>
Reviewed-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Razvan Virtan <virtanrazvan@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1091

plat/common/include/x86/paging.h

index 04f6ee4477a1b9f788ca52d9201c36fa1b7b8b48..6f8f4227c7ee52e02c62778d618e57ec9682ff5f 100644 (file)
@@ -244,7 +244,7 @@ pgarch_kunmap(struct uk_pagetable *pt __unused, __vaddr_t vaddr __unused,
 
 static __paddr_t x86_pg_maxphysaddr;
 
-#define X86_PG_VALID_PADDR(paddr)      ((paddr) < x86_pg_maxphysaddr)
+#define X86_PG_VALID_PADDR(paddr)      ((paddr) <= x86_pg_maxphysaddr)
 
 int ukarch_paddr_range_isvalid(__paddr_t start, __paddr_t end)
 {
@@ -308,7 +308,7 @@ pgarch_init(void)
        }
 
        max_addr_bit = (eax & X86_PG_PADDR_MASK) >> X86_PG_PADDR_SHIFT;
-       x86_pg_maxphysaddr = (1UL << max_addr_bit);
+       x86_pg_maxphysaddr = (1UL << max_addr_bit) - 1;
 
        return 0;
 }