diff options
author | Justin Hibbits <jhibbits@FreeBSD.org> | 2021-06-06 02:45:15 +0000 |
---|---|---|
committer | Justin Hibbits <jhibbits@FreeBSD.org> | 2021-06-06 02:49:42 +0000 |
commit | d7bfb412a7c3bd53ef1b664a46726e88ec9e02d1 (patch) | |
tree | 0146d9442112a6bbd315d7f6455aaf53272f80e4 /sys/powerpc | |
parent | 59409cb90fc079bd388d8f7404679193e4d34889 (diff) | |
download | src-d7bfb412a7c3bd53ef1b664a46726e88ec9e02d1.tar.gz src-d7bfb412a7c3bd53ef1b664a46726e88ec9e02d1.zip |
powerpc64le/pmap: Fix superpage promotions
The page table is always big endian. Without byte swapping on LE, the
promotion ability checks were invalid, and superpage promotions always
failed.
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/aim/mmu_radix.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/powerpc/aim/mmu_radix.c b/sys/powerpc/aim/mmu_radix.c index 83eda03f9556..c1f587a09e86 100644 --- a/sys/powerpc/aim/mmu_radix.c +++ b/sys/powerpc/aim/mmu_radix.c @@ -2712,7 +2712,7 @@ pmap_promote_l3e(pmap_t pmap, pml3_entry_t *pde, vm_offset_t va, */ firstpte = (pt_entry_t *)PHYS_TO_DMAP(be64toh(*pde) & PG_FRAME); setpde: - newpde = *firstpte; + newpde = be64toh(*firstpte); if ((newpde & ((PG_FRAME & L3_PAGE_MASK) | PG_A | PG_V)) != (PG_A | PG_V)) { CTR2(KTR_PMAP, "pmap_promote_l3e: failure for va %#lx" " in pmap %p", va, pmap); |