Index: sys/arm/arm/nexus.c =================================================================== --- sys/arm/arm/nexus.c +++ sys/arm/arm/nexus.c @@ -363,7 +363,7 @@ } rman_set_bustag(r, fdtbus_bs_tag); #else - vaddr = (bus_space_handle_t)pmap_mapdev((vm_offset_t)paddr, + vaddr = (bus_space_handle_t)pmap_mapdev((vm_paddr_t)paddr, (vm_size_t)psize); if (vaddr == 0) { rman_deactivate_resource(r); Index: sys/arm/freescale/fsl_ocotp.c =================================================================== --- sys/arm/freescale/fsl_ocotp.c +++ sys/arm/freescale/fsl_ocotp.c @@ -81,7 +81,7 @@ ocotp_size = (vm_size_t)size; - if ((ocotp_regs = pmap_mapdev((vm_offset_t)base, ocotp_size)) == NULL) + if ((ocotp_regs = pmap_mapdev((vm_paddr_t)base, ocotp_size)) == NULL) goto fatal; return; Index: sys/arm64/include/pmap.h =================================================================== --- sys/arm64/include/pmap.h +++ sys/arm64/include/pmap.h @@ -184,13 +184,13 @@ vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t); void pmap_kremove_device(vm_offset_t, vm_size_t); -void *pmap_mapdev_attr(vm_offset_t pa, vm_size_t size, vm_memattr_t ma); +void *pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, vm_memattr_t ma); bool pmap_page_is_mapped(vm_page_t m); int pmap_pinit_stage(pmap_t, enum pmap_stage, int); bool pmap_ps_enabled(pmap_t pmap); uint64_t pmap_to_ttbr0(pmap_t pmap); -void *pmap_mapdev(vm_offset_t, vm_size_t); +void *pmap_mapdev(vm_paddr_t, vm_size_t); void *pmap_mapbios(vm_paddr_t, vm_size_t); void pmap_unmapdev(vm_offset_t, vm_size_t); void pmap_unmapbios(vm_offset_t, vm_size_t); Index: sys/kern/subr_devmap.c =================================================================== --- sys/kern/subr_devmap.c +++ sys/kern/subr_devmap.c @@ -260,7 +260,7 @@ * pmap_kenter_device(). */ void * -pmap_mapdev(vm_offset_t pa, vm_size_t size) +pmap_mapdev(vm_paddr_t pa, vm_size_t size) { vm_offset_t va, offset; void * rva; @@ -270,7 +270,7 @@ return (rva); offset = pa & PAGE_MASK; - pa = trunc_page(pa); + pa -= offset; size = round_page(size + offset); #if defined(__aarch64__) || defined(__riscv) @@ -292,7 +292,7 @@ #if defined(__aarch64__) || defined(__riscv) void * -pmap_mapdev_attr(vm_offset_t pa, vm_size_t size, vm_memattr_t ma) +pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) { vm_offset_t va, offset; void * rva; @@ -302,7 +302,7 @@ return (rva); offset = pa & PAGE_MASK; - pa = trunc_page(pa); + pa -= offset; size = round_page(size + offset); if (early_boot) { Index: sys/powerpc/powermac/macio.c =================================================================== --- sys/powerpc/powermac/macio.c +++ sys/powerpc/powermac/macio.c @@ -627,7 +627,7 @@ return (bus_activate_resource(bus, type, rid, res)); if ((type == SYS_RES_MEMORY) || (type == SYS_RES_IOPORT)) { - p = pmap_mapdev((vm_offset_t)rman_get_start(res) + sc->sc_base, + p = pmap_mapdev((vm_paddr_t)rman_get_start(res) + sc->sc_base, (vm_size_t)rman_get_size(res)); if (p == NULL) return (ENOMEM); Index: sys/powerpc/psim/iobus.c =================================================================== --- sys/powerpc/psim/iobus.c +++ sys/powerpc/psim/iobus.c @@ -372,7 +372,7 @@ return (bus_activate_resource(bus, type, rid, res)); if ((type == SYS_RES_MEMORY) || (type == SYS_RES_IOPORT)) { - p = pmap_mapdev((vm_offset_t)rman_get_start(res) + sc->sc_addr, + p = pmap_mapdev((vm_paddr_t)rman_get_start(res) + sc->sc_addr, (vm_size_t)rman_get_size(res)); if (p == NULL) return (ENOMEM); Index: sys/riscv/include/pmap.h =================================================================== --- sys/riscv/include/pmap.h +++ sys/riscv/include/pmap.h @@ -157,11 +157,11 @@ vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t); void pmap_kremove_device(vm_offset_t, vm_size_t); -void *pmap_mapdev_attr(vm_offset_t pa, vm_size_t size, vm_memattr_t ma); +void *pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, vm_memattr_t ma); bool pmap_page_is_mapped(vm_page_t m); bool pmap_ps_enabled(pmap_t); -void *pmap_mapdev(vm_offset_t, vm_size_t); +void *pmap_mapdev(vm_paddr_t, vm_size_t); void *pmap_mapbios(vm_paddr_t, vm_size_t); void pmap_unmapdev(vm_offset_t, vm_size_t); void pmap_unmapbios(vm_offset_t, vm_size_t);