diff --git a/sys/kern/subr_physmem.c b/sys/kern/subr_physmem.c index 5caff7da4f5..498ad2440f4 100644 --- a/sys/kern/subr_physmem.c +++ b/sys/kern/subr_physmem.c @@ -483,6 +483,20 @@ physmem_avail(vm_paddr_t *avail, size_t maxavail) return (regions_to_avail(avail, EXFLAG_NOALLOC, maxavail, 0, NULL, NULL)); } +bool +physmem_excluded(vm_paddr_t pa, vm_size_t sz) +{ + const struct region *exp; + size_t exi; + + for (exi = 0, exp = exregions; exi < excnt; ++exi, ++exp) { + if (pa < exp->addr || pa + sz > exp->addr + exp->size) + continue; + return (true); + } + return (false); +} + #ifdef _KERNEL /* * Process all the regions added earlier into the global avail lists. diff --git a/sys/sys/physmem.h b/sys/sys/physmem.h index f9ba69228c9..dcf12b589d0 100644 --- a/sys/sys/physmem.h +++ b/sys/sys/physmem.h @@ -54,6 +54,7 @@ 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); void physmem_init_kernel_globals(void); void physmem_print_tables(void); +bool physmem_excluded(vm_paddr_t pa, vm_size_t sz); /* * Convenience routines for FDT.