Index: sys/arm64/arm64/pmap.c =================================================================== --- sys/arm64/arm64/pmap.c +++ sys/arm64/arm64/pmap.c @@ -977,7 +977,7 @@ /* Assume the address we were loaded to is a valid physical address */ min_pa = KERNBASE - kern_delta; - physmap_idx = physmem_avail(physmap, nitems(physmap)); + physmap_idx = physmem_hwregions(physmap, nitems(physmap)); physmap_idx /= 2; /* Index: sys/kern/subr_physmem.c =================================================================== --- sys/kern/subr_physmem.c +++ sys/kern/subr_physmem.c @@ -388,6 +388,13 @@ return (regions_to_avail(avail, EXFLAG_NOALLOC, maxavail, 0, NULL, NULL)); } +size_t +physmem_hwregions(vm_paddr_t *regions, size_t maxregions) +{ + + return (regions_to_avail(regions, 0, maxregions, 0, NULL, NULL)); +} + /* * Process all the regions added earlier into the global avail lists. * Index: sys/riscv/riscv/pmap.c =================================================================== --- sys/riscv/riscv/pmap.c +++ sys/riscv/riscv/pmap.c @@ -583,7 +583,7 @@ /* Assume the address we were loaded to is a valid physical address. */ min_pa = max_pa = kernstart; - physmap_idx = physmem_avail(physmap, nitems(physmap)); + physmap_idx = physmem_hwregions(physmap, nitems(physmap)); physmap_idx /= 2; /* Index: sys/sys/physmem.h =================================================================== --- sys/sys/physmem.h +++ sys/sys/physmem.h @@ -52,6 +52,7 @@ void physmem_hardware_region(uint64_t pa, uint64_t sz); void physmem_exclude_region(vm_paddr_t pa, vm_size_t sz, uint32_t flags); size_t physmem_avail(vm_paddr_t *avail, size_t maxavail); +size_t physmem_hwregions(vm_paddr_t *avail, size_t maxregions); void physmem_init_kernel_globals(void); void physmem_print_tables(void);