git: d7bfb412a7c3 - main - powerpc64le/pmap: Fix superpage promotions

Justin Hibbits jhibbits at FreeBSD.org
Sun Jun 6 02:50:12 UTC 2021


The branch main has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=d7bfb412a7c3bd53ef1b664a46726e88ec9e02d1

commit d7bfb412a7c3bd53ef1b664a46726e88ec9e02d1
Author:     Justin Hibbits <jhibbits at FreeBSD.org>
AuthorDate: 2021-06-06 02:45:15 +0000
Commit:     Justin Hibbits <jhibbits at FreeBSD.org>
CommitDate: 2021-06-06 02:49:42 +0000

    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.
---
 sys/powerpc/aim/mmu_radix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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);


More information about the dev-commits-src-all mailing list