diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2026-04-23 17:05:53 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2026-04-23 17:05:53 +0000 |
| commit | dfb804eb57f1e50f5c84060007e3b1e9c1edf253 (patch) | |
| tree | 75cebfcb62d887ac238dcbf7fc9ece79203b4409 /sys/powerpc | |
| parent | ef159bdd54cada6db8b0af6380fa9269d0f26a04 (diff) | |
Diffstat (limited to 'sys/powerpc')
| -rw-r--r-- | sys/powerpc/aim/mmu_radix.c | 24 | ||||
| -rw-r--r-- | sys/powerpc/booke/pmap.c | 7 | ||||
| -rw-r--r-- | sys/powerpc/include/mmuvar.h | 2 | ||||
| -rw-r--r-- | sys/powerpc/include/pmap.h | 2 | ||||
| -rw-r--r-- | sys/powerpc/powerpc/pmap_dispatch.c | 2 |
5 files changed, 19 insertions, 18 deletions
diff --git a/sys/powerpc/aim/mmu_radix.c b/sys/powerpc/aim/mmu_radix.c index eaf9b39dde8f..214878c08669 100644 --- a/sys/powerpc/aim/mmu_radix.c +++ b/sys/powerpc/aim/mmu_radix.c @@ -466,7 +466,7 @@ void mmu_radix_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz); void mmu_radix_unwire(pmap_t, vm_offset_t, vm_offset_t); void mmu_radix_zero_page(vm_page_t); void mmu_radix_zero_page_area(vm_page_t, int, int); -int mmu_radix_change_attr(vm_offset_t, vm_size_t, vm_memattr_t); +int mmu_radix_change_attr(void *, vm_size_t, vm_memattr_t); void mmu_radix_page_array_startup(long pages); #include "mmu_oea64.h" @@ -606,7 +606,7 @@ static bool pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spg static void pmap_invalidate_page(pmap_t pmap, vm_offset_t start); static void pmap_invalidate_all(pmap_t pmap); -static int pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush); +static int pmap_change_attr_locked(void *va, vm_size_t size, int mode, bool flush); static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte); /* @@ -5948,7 +5948,7 @@ mmu_radix_page_set_memattr(vm_page_t m, vm_memattr_t ma) * required for data coherence. */ if ((m->flags & PG_FICTITIOUS) == 0 && - mmu_radix_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), + mmu_radix_change_attr((void *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, m->md.mdpg_cache_attrs)) panic("memory attribute change on the direct map failed"); } @@ -6202,12 +6202,11 @@ pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva) } int -mmu_radix_change_attr(vm_offset_t va, vm_size_t size, - vm_memattr_t mode) +mmu_radix_change_attr(void *va, vm_size_t size, vm_memattr_t mode) { int error; - CTR4(KTR_PMAP, "%s(%#x, %#zx, %d)", __func__, va, size, mode); + CTR4(KTR_PMAP, "%s(%p, %#zx, %d)", __func__, va, size, mode); PMAP_LOCK(kernel_pmap); error = pmap_change_attr_locked(va, size, mode, true); PMAP_UNLOCK(kernel_pmap); @@ -6215,9 +6214,9 @@ mmu_radix_change_attr(vm_offset_t va, vm_size_t size, } static int -pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) +pmap_change_attr_locked(void *addr, vm_size_t size, int mode, bool flush) { - vm_offset_t base, offset, tmpva; + vm_offset_t base, offset, tmpva, va; vm_paddr_t pa_start, pa_end, pa_end1; pml2_entry_t *l2e; pml3_entry_t *l3e; @@ -6226,6 +6225,7 @@ pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) bool changed; PMAP_LOCK_ASSERT(kernel_pmap, MA_OWNED); + va = (vm_offset_t)addr; base = trunc_page(va); offset = va & PAGE_MASK; size = round_page(offset + size); @@ -6332,7 +6332,7 @@ pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) else { /* Run ended, update direct map. */ error = pmap_change_attr_locked( - PHYS_TO_DMAP(pa_start), + (void *)PHYS_TO_DMAP(pa_start), pa_end - pa_start, mode, flush); if (error != 0) break; @@ -6362,7 +6362,7 @@ pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) else { /* Run ended, update direct map. */ error = pmap_change_attr_locked( - PHYS_TO_DMAP(pa_start), + (void *)PHYS_TO_DMAP(pa_start), pa_end - pa_start, mode, flush); if (error != 0) break; @@ -6390,7 +6390,7 @@ pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) else { /* Run ended, update direct map. */ error = pmap_change_attr_locked( - PHYS_TO_DMAP(pa_start), + (void *)PHYS_TO_DMAP(pa_start), pa_end - pa_start, mode, flush); if (error != 0) break; @@ -6405,7 +6405,7 @@ pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode, bool flush) if (error == 0 && pa_start != pa_end && pa_start < dmaplimit) { pa_end1 = MIN(pa_end, dmaplimit); if (pa_start != pa_end1) - error = pmap_change_attr_locked(PHYS_TO_DMAP(pa_start), + error = pmap_change_attr_locked((void *)PHYS_TO_DMAP(pa_start), pa_end1 - pa_start, mode, flush); } diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index fcc98df25b38..e7942a53ea63 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -349,7 +349,7 @@ static void mmu_booke_dumpsys_unmap(vm_paddr_t pa, size_t, static void mmu_booke_scan_init(void); static void *mmu_booke_quick_enter_page(vm_page_t m); static void mmu_booke_quick_remove_page(void *addr); -static int mmu_booke_change_attr(vm_offset_t addr, +static int mmu_booke_change_attr(void *addr, vm_size_t sz, vm_memattr_t mode); static int mmu_booke_decode_kernel_ptr(vm_offset_t addr, int *is_user, vm_offset_t *decoded_addr); @@ -2372,13 +2372,14 @@ mmu_booke_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *pap) } static int -mmu_booke_change_attr(vm_offset_t addr, vm_size_t sz, vm_memattr_t mode) +mmu_booke_change_attr(void *sva, vm_size_t sz, vm_memattr_t mode) { - vm_offset_t va; + vm_offset_t addr, va; pte_t *pte; int i, j; tlb_entry_t e; + addr = (vm_offset_t)sva; addr = trunc_page(addr); /* Only allow changes to mapped kernel addresses. This includes: diff --git a/sys/powerpc/include/mmuvar.h b/sys/powerpc/include/mmuvar.h index d1e6f8f4b6d9..534a8f381107 100644 --- a/sys/powerpc/include/mmuvar.h +++ b/sys/powerpc/include/mmuvar.h @@ -38,7 +38,7 @@ typedef void *(*pmap_mapdev_t)(vm_paddr_t, vm_size_t); typedef void *(*pmap_mapdev_attr_t)(vm_paddr_t, vm_size_t, vm_memattr_t); typedef void (*pmap_unmapdev_t)(void *, vm_size_t); typedef void (*pmap_page_set_memattr_t)(vm_page_t, vm_memattr_t); -typedef int (*pmap_change_attr_t)(vm_offset_t, vm_size_t, vm_memattr_t); +typedef int (*pmap_change_attr_t)(void *, vm_size_t, vm_memattr_t); typedef int (*pmap_map_user_ptr_t)(pmap_t, volatile const void *, void **, size_t, size_t *); typedef int (*pmap_decode_kernel_ptr_t)(vm_offset_t, int *, vm_offset_t *); diff --git a/sys/powerpc/include/pmap.h b/sys/powerpc/include/pmap.h index df07858ff7e3..ff9be075d22d 100644 --- a/sys/powerpc/include/pmap.h +++ b/sys/powerpc/include/pmap.h @@ -310,7 +310,7 @@ void *pmap_mapdev(vm_paddr_t, vm_size_t); void *pmap_mapdev_attr(vm_paddr_t, vm_size_t, vm_memattr_t); void pmap_unmapdev(void *, vm_size_t); void pmap_page_set_memattr(vm_page_t, vm_memattr_t); -int pmap_change_attr(vm_offset_t, vm_size_t, vm_memattr_t); +int pmap_change_attr(void *, vm_size_t, vm_memattr_t); int pmap_map_user_ptr(pmap_t pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t *klen); int pmap_decode_kernel_ptr(vm_offset_t addr, int *is_user, diff --git a/sys/powerpc/powerpc/pmap_dispatch.c b/sys/powerpc/powerpc/pmap_dispatch.c index 676e0d4d4c78..96a07976d3da 100644 --- a/sys/powerpc/powerpc/pmap_dispatch.c +++ b/sys/powerpc/powerpc/pmap_dispatch.c @@ -185,7 +185,7 @@ DEFINE_PMAP_IFUNC(int, map_user_ptr, DEFINE_PMAP_IFUNC(int, decode_kernel_ptr, (vm_offset_t, int *, vm_offset_t *)); DEFINE_PMAP_IFUNC(int, dev_direct_mapped, (vm_paddr_t, vm_size_t)); DEFINE_PMAP_IFUNC(void, sync_icache, (pmap_t, vm_offset_t, vm_size_t)); -DEFINE_PMAP_IFUNC(int, change_attr, (vm_offset_t, vm_size_t, vm_memattr_t)); +DEFINE_PMAP_IFUNC(int, change_attr, (void *, vm_size_t, vm_memattr_t)); DEFINE_PMAP_IFUNC(void, page_array_startup, (long)); DEFINE_PMAP_IFUNC(void, tlbie_all, (void)); |
