Index: head/sys/amd64/amd64/machdep.c =================================================================== --- head/sys/amd64/amd64/machdep.c +++ head/sys/amd64/amd64/machdep.c @@ -95,14 +95,15 @@ #include #include +#include #include #include #include #include #include #include -#include #include +#include #ifdef DDB #ifndef KDB Index: head/sys/amd64/amd64/minidump_machdep.c =================================================================== --- head/sys/amd64/amd64/minidump_machdep.c +++ head/sys/amd64/amd64/minidump_machdep.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include Index: head/sys/amd64/amd64/pmap.c =================================================================== --- head/sys/amd64/amd64/pmap.c +++ head/sys/amd64/amd64/pmap.c @@ -149,6 +149,7 @@ #include #include #include +#include #include #include Index: head/sys/amd64/amd64/uma_machdep.c =================================================================== --- head/sys/amd64/amd64/uma_machdep.c +++ head/sys/amd64/amd64/uma_machdep.c @@ -36,12 +36,13 @@ #include #include #include +#include #include #include +#include #include #include #include -#include void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, Index: head/sys/arm/arm/mem.c =================================================================== --- head/sys/arm/arm/mem.c +++ head/sys/arm/arm/mem.c @@ -65,11 +65,11 @@ #include #include #include +#include #include #include #include -#include /* * Used in /dev/mem drivers and elsewhere Index: head/sys/arm/arm/minidump_machdep.c =================================================================== --- head/sys/arm/arm/minidump_machdep.c +++ head/sys/arm/arm/minidump_machdep.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include Index: head/sys/arm64/arm64/minidump_machdep.c =================================================================== --- head/sys/arm64/arm64/minidump_machdep.c +++ head/sys/arm64/arm64/minidump_machdep.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include Index: head/sys/arm64/arm64/pmap.c =================================================================== --- head/sys/arm64/arm64/pmap.c +++ head/sys/arm64/arm64/pmap.c @@ -143,6 +143,7 @@ #include #include #include +#include #include #include Index: head/sys/arm64/arm64/uma_machdep.c =================================================================== --- head/sys/arm64/arm64/uma_machdep.c +++ head/sys/arm64/arm64/uma_machdep.c @@ -34,12 +34,13 @@ #include #include #include +#include #include #include +#include #include #include #include -#include void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, Index: head/sys/i386/i386/machdep.c =================================================================== --- head/sys/i386/i386/machdep.c +++ head/sys/i386/i386/machdep.c @@ -94,14 +94,15 @@ #include #include +#include #include #include #include #include #include #include -#include #include +#include #ifdef DDB #ifndef KDB Index: head/sys/i386/i386/minidump_machdep_base.c =================================================================== --- head/sys/i386/i386/minidump_machdep_base.c +++ head/sys/i386/i386/minidump_machdep_base.c @@ -43,11 +43,11 @@ #include #include #include +#include #include #include #include #include -#include #include CTASSERT(sizeof(struct kerneldumpheader) == 512); Index: head/sys/kern/kern_dump.c =================================================================== --- head/sys/kern/kern_dump.c +++ head/sys/kern/kern_dump.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include Index: head/sys/kern/subr_physmem.c =================================================================== --- head/sys/kern/subr_physmem.c +++ head/sys/kern/subr_physmem.c @@ -43,6 +43,7 @@ #include #include #include +#include #include /* Index: head/sys/mips/atheros/ar531x/ar5315_machdep.c =================================================================== --- head/sys/mips/atheros/ar531x/ar5315_machdep.c +++ head/sys/mips/atheros/ar531x/ar5315_machdep.c @@ -45,6 +45,7 @@ #include #include #include +#include #include Index: head/sys/mips/atheros/ar71xx_machdep.c =================================================================== --- head/sys/mips/atheros/ar71xx_machdep.c +++ head/sys/mips/atheros/ar71xx_machdep.c @@ -48,6 +48,7 @@ #include #include #include +#include #include Index: head/sys/mips/beri/beri_machdep.c =================================================================== --- head/sys/mips/beri/beri_machdep.c +++ head/sys/mips/beri/beri_machdep.c @@ -69,6 +69,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/broadcom/bcm_machdep.c =================================================================== --- head/sys/mips/broadcom/bcm_machdep.c +++ head/sys/mips/broadcom/bcm_machdep.c @@ -61,6 +61,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/cavium/octeon_machdep.c =================================================================== --- head/sys/mips/cavium/octeon_machdep.c +++ head/sys/mips/cavium/octeon_machdep.c @@ -60,6 +60,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/ingenic/jz4780_machdep.c =================================================================== --- head/sys/mips/ingenic/jz4780_machdep.c +++ head/sys/mips/ingenic/jz4780_machdep.c @@ -51,6 +51,7 @@ #include #include #include +#include #include Index: head/sys/mips/malta/malta_machdep.c =================================================================== --- head/sys/mips/malta/malta_machdep.c +++ head/sys/mips/malta/malta_machdep.c @@ -58,6 +58,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/mediatek/mtk_machdep.c =================================================================== --- head/sys/mips/mediatek/mtk_machdep.c +++ head/sys/mips/mediatek/mtk_machdep.c @@ -58,6 +58,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/mips/minidump_machdep.c =================================================================== --- head/sys/mips/mips/minidump_machdep.c +++ head/sys/mips/mips/minidump_machdep.c @@ -42,13 +42,14 @@ #include #include #include +#include #include #include #include +#include #include #include #include -#include #include #include Index: head/sys/mips/mips/pmap.c =================================================================== --- head/sys/mips/mips/pmap.c +++ head/sys/mips/mips/pmap.c @@ -95,6 +95,7 @@ #include #include #include +#include #include #include Index: head/sys/mips/mips/uma_machdep.c =================================================================== --- head/sys/mips/mips/uma_machdep.c +++ head/sys/mips/mips/uma_machdep.c @@ -36,12 +36,13 @@ #include #include #include +#include #include #include +#include #include #include #include -#include void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, Index: head/sys/mips/nlm/xlp_machdep.c =================================================================== --- head/sys/mips/nlm/xlp_machdep.c +++ head/sys/mips/nlm/xlp_machdep.c @@ -59,6 +59,7 @@ #include #include #include +#include #include #include Index: head/sys/powerpc/aim/mmu_oea64.c =================================================================== --- head/sys/powerpc/aim/mmu_oea64.c +++ head/sys/powerpc/aim/mmu_oea64.c @@ -82,6 +82,7 @@ #include #include #include +#include #include #include Index: head/sys/powerpc/aim/mmu_radix.c =================================================================== --- head/sys/powerpc/aim/mmu_radix.c +++ head/sys/powerpc/aim/mmu_radix.c @@ -68,6 +68,7 @@ #include #include #include +#include #include #include Index: head/sys/powerpc/booke/pmap.c =================================================================== --- head/sys/powerpc/booke/pmap.c +++ head/sys/powerpc/booke/pmap.c @@ -99,16 +99,17 @@ #include #include +#include #include #include #include #include #include -#include #include #include #include #include +#include #include #include Index: head/sys/powerpc/powerpc/minidump_machdep.c =================================================================== --- head/sys/powerpc/powerpc/minidump_machdep.c +++ head/sys/powerpc/powerpc/minidump_machdep.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include Index: head/sys/powerpc/powerpc/uma_machdep.c =================================================================== --- head/sys/powerpc/powerpc/uma_machdep.c +++ head/sys/powerpc/powerpc/uma_machdep.c @@ -36,15 +36,16 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include #include -#include static int hw_uma_mdpages; SYSCTL_INT(_hw, OID_AUTO, uma_mdpages, CTLFLAG_RD, &hw_uma_mdpages, 0, Index: head/sys/riscv/riscv/minidump_machdep.c =================================================================== --- head/sys/riscv/riscv/minidump_machdep.c +++ head/sys/riscv/riscv/minidump_machdep.c @@ -45,6 +45,7 @@ #include #include #include +#include #include #include Index: head/sys/riscv/riscv/pmap.c =================================================================== --- head/sys/riscv/riscv/pmap.c +++ head/sys/riscv/riscv/pmap.c @@ -152,6 +152,7 @@ #include #include #include +#include #include #include Index: head/sys/riscv/riscv/uma_machdep.c =================================================================== --- head/sys/riscv/riscv/uma_machdep.c +++ head/sys/riscv/riscv/uma_machdep.c @@ -34,12 +34,13 @@ #include #include #include +#include #include #include +#include #include #include #include -#include void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, Index: head/sys/vm/uma_core.c =================================================================== --- head/sys/vm/uma_core.c +++ head/sys/vm/uma_core.c @@ -82,16 +82,17 @@ #include #include +#include #include #include #include #include -#include #include #include #include #include #include +#include #include #include #include Index: head/sys/vm/vm_dumpset.h =================================================================== --- head/sys/vm/vm_dumpset.h +++ head/sys/vm/vm_dumpset.h @@ -0,0 +1,99 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020, Scott Phillips + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_DUMPSET_H_ +#define _SYS_DUMPSET_H_ + +#include +#include + +extern struct bitset *vm_page_dump; +extern long vm_page_dump_pages; +extern vm_paddr_t dump_avail[PHYS_AVAIL_COUNT]; + +static inline void +dump_add_page(vm_paddr_t pa) +{ + vm_pindex_t adj; + int i; + + adj = 0; + for (i = 0; dump_avail[i + 1] != 0; i += 2) { + if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) { + BIT_SET_ATOMIC(vm_page_dump_pages, + (pa >> PAGE_SHIFT) - (dump_avail[i] >> PAGE_SHIFT) + + adj, vm_page_dump); + return; + } + adj += howmany(dump_avail[i + 1], PAGE_SIZE) - + dump_avail[i] / PAGE_SIZE; + } +} + +static inline void +dump_drop_page(vm_paddr_t pa) +{ + vm_pindex_t adj; + int i; + + adj = 0; + for (i = 0; dump_avail[i + 1] != 0; i += 2) { + if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) { + BIT_CLR_ATOMIC(vm_page_dump_pages, + (pa >> PAGE_SHIFT) - (dump_avail[i] >> PAGE_SHIFT) + + adj, vm_page_dump); + return; + } + adj += howmany(dump_avail[i + 1], PAGE_SIZE) - + dump_avail[i] / PAGE_SIZE; + } +} + +static inline vm_paddr_t +vm_page_dump_index_to_pa(int bit) +{ + int i, tot; + + for (i = 0; dump_avail[i + 1] != 0; i += 2) { + tot = howmany(dump_avail[i + 1], PAGE_SIZE) - + dump_avail[i] / PAGE_SIZE; + if (bit < tot) + return ((vm_paddr_t)bit * PAGE_SIZE + + (dump_avail[i] & ~PAGE_MASK)); + bit -= tot; + } + return ((vm_paddr_t)NULL); +} + +#define VM_PAGE_DUMP_FOREACH(pa) \ + for (vm_pindex_t __b = BIT_FFS(vm_page_dump_pages, vm_page_dump); \ + (pa) = vm_page_dump_index_to_pa(__b - 1), __b != 0; \ + __b = BIT_FFS_AT(vm_page_dump_pages, vm_page_dump, __b)) + +#endif /* _SYS_DUMPSET_H_ */ Index: head/sys/vm/vm_page.h =================================================================== --- head/sys/vm/vm_page.h +++ head/sys/vm/vm_page.h @@ -69,8 +69,6 @@ #ifndef _VM_PAGE_ #define _VM_PAGE_ -#include -#include #include /* @@ -586,69 +584,6 @@ #define PS_ALL_DIRTY 0x1 #define PS_ALL_VALID 0x2 #define PS_NONE_BUSY 0x4 - -extern struct bitset *vm_page_dump; -extern long vm_page_dump_pages; -extern vm_paddr_t dump_avail[]; - -static inline void -dump_add_page(vm_paddr_t pa) -{ - vm_pindex_t adj; - int i; - - adj = 0; - for (i = 0; dump_avail[i + 1] != 0; i += 2) { - if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) { - BIT_SET_ATOMIC(vm_page_dump_pages, - (pa >> PAGE_SHIFT) - (dump_avail[i] >> PAGE_SHIFT) + - adj, vm_page_dump); - return; - } - adj += howmany(dump_avail[i + 1], PAGE_SIZE) - - dump_avail[i] / PAGE_SIZE; - } -} - -static inline void -dump_drop_page(vm_paddr_t pa) -{ - vm_pindex_t adj; - int i; - - adj = 0; - for (i = 0; dump_avail[i + 1] != 0; i += 2) { - if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) { - BIT_CLR_ATOMIC(vm_page_dump_pages, - (pa >> PAGE_SHIFT) - (dump_avail[i] >> PAGE_SHIFT) + - adj, vm_page_dump); - return; - } - adj += howmany(dump_avail[i + 1], PAGE_SIZE) - - dump_avail[i] / PAGE_SIZE; - } -} - -static inline vm_paddr_t -vm_page_dump_index_to_pa(int bit) -{ - int i, tot; - - for (i = 0; dump_avail[i + 1] != 0; i += 2) { - tot = howmany(dump_avail[i + 1], PAGE_SIZE) - - dump_avail[i] / PAGE_SIZE; - if (bit < tot) - return ((vm_paddr_t)bit * PAGE_SIZE + - (dump_avail[i] & ~PAGE_MASK)); - bit -= tot; - } - return ((vm_paddr_t)NULL); -} - -#define VM_PAGE_DUMP_FOREACH(pa) \ - for (vm_pindex_t __b = BIT_FFS(vm_page_dump_pages, vm_page_dump); \ - (pa) = vm_page_dump_index_to_pa(__b - 1), __b != 0; \ - __b = BIT_FFS_AT(vm_page_dump_pages, vm_page_dump, __b)) bool vm_page_busy_acquire(vm_page_t m, int allocflags); void vm_page_busy_downgrade(vm_page_t m); Index: head/sys/vm/vm_page.c =================================================================== --- head/sys/vm/vm_page.c +++ head/sys/vm/vm_page.c @@ -108,6 +108,7 @@ #include #include #include +#include #include #include Index: head/sys/vm/vm_phys.h =================================================================== --- head/sys/vm/vm_phys.h +++ head/sys/vm/vm_phys.h @@ -47,7 +47,6 @@ #endif extern vm_paddr_t phys_avail[PHYS_AVAIL_COUNT]; -extern vm_paddr_t dump_avail[PHYS_AVAIL_COUNT]; /* Domains must be dense (non-sparse) and zero-based. */ struct mem_affinity { Index: head/sys/x86/x86/nexus.c =================================================================== --- head/sys/x86/x86/nexus.c +++ head/sys/x86/x86/nexus.c @@ -66,6 +66,7 @@ #include #include #include +#include #include #include