diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2020-10-14 22:51:40 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2020-10-14 22:51:40 +0000 |
| commit | 6f3b523c9a576029433f8649a9b6efd2c34604f7 (patch) | |
| tree | b99468d1ea7fe59fc5221cc57632a9a81680443e /sys | |
| parent | e12686ec238bcb5815edd0cec4dcf983a7fb6e8d (diff) | |
Notes
Diffstat (limited to 'sys')
39 files changed, 145 insertions, 78 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 7f6241af908e..9557ea6f3a46 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -95,14 +95,15 @@ __FBSDID("$FreeBSD$"); #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_extern.h> #include <vm/vm_kern.h> #include <vm/vm_page.h> #include <vm/vm_map.h> #include <vm/vm_object.h> #include <vm/vm_pager.h> -#include <vm/vm_param.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #ifdef DDB #ifndef KDB diff --git a/sys/amd64/amd64/minidump_machdep.c b/sys/amd64/amd64/minidump_machdep.c index 221d3e1fa9df..ea8220157083 100644 --- a/sys/amd64/amd64/minidump_machdep.c +++ b/sys/amd64/amd64/minidump_machdep.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/atomic.h> #include <machine/elf.h> diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 2599e8c085e1..e6bcf319ef8c 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -149,6 +149,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_phys.h> #include <vm/vm_radix.h> #include <vm/vm_reserv.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/intr_machdep.h> diff --git a/sys/amd64/amd64/uma_machdep.c b/sys/amd64/amd64/uma_machdep.c index 68cdaf887fb9..27939e4aa033 100644 --- a/sys/amd64/amd64/uma_machdep.c +++ b/sys/amd64/amd64/uma_machdep.c @@ -36,12 +36,13 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_pageout.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <machine/md_var.h> -#include <machine/vmparam.h> void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, diff --git a/sys/arm/arm/mem.c b/sys/arm/arm/mem.c index 24be36a1f22e..9ee7dccc24e2 100644 --- a/sys/arm/arm/mem.c +++ b/sys/arm/arm/mem.c @@ -65,11 +65,11 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <vm/vm_extern.h> #include <machine/memdev.h> -#include <machine/vmparam.h> /* * Used in /dev/mem drivers and elsewhere diff --git a/sys/arm/arm/minidump_machdep.c b/sys/arm/arm/minidump_machdep.c index 332c946dd92b..9f7ef96aca49 100644 --- a/sys/arm/arm/minidump_machdep.c +++ b/sys/arm/arm/minidump_machdep.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/atomic.h> #include <machine/cpu.h> diff --git a/sys/arm64/arm64/minidump_machdep.c b/sys/arm64/arm64/minidump_machdep.c index 1395501e087e..1dd40806669b 100644 --- a/sys/arm64/arm64/minidump_machdep.c +++ b/sys/arm64/arm64/minidump_machdep.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/md_var.h> diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 791987d994b6..284f00b3cc0d 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -143,6 +143,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_phys.h> #include <vm/vm_radix.h> #include <vm/vm_reserv.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/machdep.h> diff --git a/sys/arm64/arm64/uma_machdep.c b/sys/arm64/arm64/uma_machdep.c index 4ab256ed2179..e419a099d640 100644 --- a/sys/arm64/arm64/uma_machdep.c +++ b/sys/arm64/arm64/uma_machdep.c @@ -34,12 +34,13 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_pageout.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <machine/md_var.h> -#include <machine/vmparam.h> void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index c21d0cb8e352..b961a8f41b6c 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -94,14 +94,15 @@ __FBSDID("$FreeBSD$"); #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_extern.h> #include <vm/vm_kern.h> #include <vm/vm_page.h> #include <vm/vm_map.h> #include <vm/vm_object.h> #include <vm/vm_pager.h> -#include <vm/vm_param.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #ifdef DDB #ifndef KDB diff --git a/sys/i386/i386/minidump_machdep_base.c b/sys/i386/i386/minidump_machdep_base.c index fcd262e024d0..9e803c6fd813 100644 --- a/sys/i386/i386/minidump_machdep_base.c +++ b/sys/i386/i386/minidump_machdep_base.c @@ -43,11 +43,11 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/atomic.h> #include <machine/elf.h> #include <machine/md_var.h> -#include <machine/vmparam.h> #include <machine/minidump.h> CTASSERT(sizeof(struct kerneldumpheader) == 512); diff --git a/sys/kern/kern_dump.c b/sys/kern/kern_dump.c index 79dc7766a964..13aeb085fe75 100644 --- a/sys/kern/kern_dump.c +++ b/sys/kern/kern_dump.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/dump.h> #include <machine/elf.h> diff --git a/sys/kern/subr_physmem.c b/sys/kern/subr_physmem.c index f3a5e39b3933..469a29ffde75 100644 --- a/sys/kern/subr_physmem.c +++ b/sys/kern/subr_physmem.c @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/md_var.h> /* diff --git a/sys/mips/atheros/ar531x/ar5315_machdep.c b/sys/mips/atheros/ar531x/ar5315_machdep.c index d3c04f50cde5..6a9332e02a96 100644 --- a/sys/mips/atheros/ar531x/ar5315_machdep.c +++ b/sys/mips/atheros/ar531x/ar5315_machdep.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <net/ethernet.h> diff --git a/sys/mips/atheros/ar71xx_machdep.c b/sys/mips/atheros/ar71xx_machdep.c index a83277c91973..2bb6d5845d16 100644 --- a/sys/mips/atheros/ar71xx_machdep.c +++ b/sys/mips/atheros/ar71xx_machdep.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <net/ethernet.h> diff --git a/sys/mips/beri/beri_machdep.c b/sys/mips/beri/beri_machdep.c index 8f9a9a165848..754898f9a175 100644 --- a/sys/mips/beri/beri_machdep.c +++ b/sys/mips/beri/beri_machdep.c @@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/bootinfo.h> #include <machine/clock.h> diff --git a/sys/mips/broadcom/bcm_machdep.c b/sys/mips/broadcom/bcm_machdep.c index df430f481d6f..20ae22f2e9b0 100644 --- a/sys/mips/broadcom/bcm_machdep.c +++ b/sys/mips/broadcom/bcm_machdep.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/cache.h> #include <machine/clock.h> diff --git a/sys/mips/cavium/octeon_machdep.c b/sys/mips/cavium/octeon_machdep.c index 3f9ab64347cc..20817226cfd8 100644 --- a/sys/mips/cavium/octeon_machdep.c +++ b/sys/mips/cavium/octeon_machdep.c @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/atomic.h> #include <machine/cache.h> diff --git a/sys/mips/ingenic/jz4780_machdep.c b/sys/mips/ingenic/jz4780_machdep.c index 0fbaa379fdd6..8d59c6ff4de7 100644 --- a/sys/mips/ingenic/jz4780_machdep.c +++ b/sys/mips/ingenic/jz4780_machdep.c @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <net/ethernet.h> diff --git a/sys/mips/malta/malta_machdep.c b/sys/mips/malta/malta_machdep.c index 5a3b4433230c..0536abe09460 100644 --- a/sys/mips/malta/malta_machdep.c +++ b/sys/mips/malta/malta_machdep.c @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/clock.h> #include <machine/cpu.h> diff --git a/sys/mips/mediatek/mtk_machdep.c b/sys/mips/mediatek/mtk_machdep.c index 97f9f027037f..bfffaee634bd 100644 --- a/sys/mips/mediatek/mtk_machdep.c +++ b/sys/mips/mediatek/mtk_machdep.c @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/cache.h> #include <machine/clock.h> diff --git a/sys/mips/mips/minidump_machdep.c b/sys/mips/mips/minidump_machdep.c index f4907f2567b6..05bd514901e7 100644 --- a/sys/mips/mips/minidump_machdep.c +++ b/sys/mips/mips/minidump_machdep.c @@ -42,13 +42,14 @@ __FBSDID("$FreeBSD$"); #include <sys/watchdog.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/pmap.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/atomic.h> #include <machine/elf.h> #include <machine/md_var.h> -#include <machine/vmparam.h> #include <machine/minidump.h> #include <machine/cache.h> diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index 2f8567836641..866013cbf38a 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -95,6 +95,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_extern.h> #include <vm/vm_pageout.h> #include <vm/vm_pager.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/cache.h> diff --git a/sys/mips/mips/uma_machdep.c b/sys/mips/mips/uma_machdep.c index 917e5a085ebd..0f342e11d025 100644 --- a/sys/mips/mips/uma_machdep.c +++ b/sys/mips/mips/uma_machdep.c @@ -36,12 +36,13 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_pageout.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <machine/md_var.h> -#include <machine/vmparam.h> void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, diff --git a/sys/mips/nlm/xlp_machdep.c b/sys/mips/nlm/xlp_machdep.c index faab44b9c937..14022df2bd51 100644 --- a/sys/mips/nlm/xlp_machdep.c +++ b/sys/mips/nlm/xlp_machdep.c @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <machine/cpu.h> #include <machine/cpufunc.h> diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c index 0ca704a6baf7..0a5664127397 100644 --- a/sys/powerpc/aim/mmu_oea64.c +++ b/sys/powerpc/aim/mmu_oea64.c @@ -82,6 +82,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/_inttypes.h> diff --git a/sys/powerpc/aim/mmu_radix.c b/sys/powerpc/aim/mmu_radix.c index 608d17e1a556..f25a70439d6f 100644 --- a/sys/powerpc/aim/mmu_radix.c +++ b/sys/powerpc/aim/mmu_radix.c @@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_pageout.h> #include <vm/vm_phys.h> #include <vm/vm_reserv.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/_inttypes.h> diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 9ff94529d955..6bc96b222db8 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -99,16 +99,17 @@ __FBSDID("$FreeBSD$"); #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_kern.h> #include <vm/vm_pageout.h> #include <vm/vm_extern.h> #include <vm/vm_object.h> -#include <vm/vm_param.h> #include <vm/vm_map.h> #include <vm/vm_pager.h> #include <vm/vm_phys.h> #include <vm/vm_pagequeue.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/_inttypes.h> diff --git a/sys/powerpc/powerpc/minidump_machdep.c b/sys/powerpc/powerpc/minidump_machdep.c index ed1ab7fa6518..e049f2debcfa 100644 --- a/sys/powerpc/powerpc/minidump_machdep.c +++ b/sys/powerpc/powerpc/minidump_machdep.c @@ -38,6 +38,7 @@ #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/atomic.h> diff --git a/sys/powerpc/powerpc/uma_machdep.c b/sys/powerpc/powerpc/uma_machdep.c index 29d8af64fd42..66412ff6277a 100644 --- a/sys/powerpc/powerpc/uma_machdep.c +++ b/sys/powerpc/powerpc/uma_machdep.c @@ -36,15 +36,16 @@ __FBSDID("$FreeBSD$"); #include <sys/sysctl.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_kern.h> #include <vm/vm_pageout.h> #include <vm/vm_extern.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <machine/md_var.h> -#include <machine/vmparam.h> static int hw_uma_mdpages; SYSCTL_INT(_hw, OID_AUTO, uma_mdpages, CTLFLAG_RD, &hw_uma_mdpages, 0, diff --git a/sys/riscv/riscv/minidump_machdep.c b/sys/riscv/riscv/minidump_machdep.c index 587804bc8cd8..2c5e27b6274f 100644 --- a/sys/riscv/riscv/minidump_machdep.c +++ b/sys/riscv/riscv/minidump_machdep.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/atomic.h> diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index 1375ab16ae18..90c731597778 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -152,6 +152,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_phys.h> #include <vm/vm_radix.h> #include <vm/vm_reserv.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <machine/machdep.h> diff --git a/sys/riscv/riscv/uma_machdep.c b/sys/riscv/riscv/uma_machdep.c index 4ab256ed2179..e419a099d640 100644 --- a/sys/riscv/riscv/uma_machdep.c +++ b/sys/riscv/riscv/uma_machdep.c @@ -34,12 +34,13 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_pageout.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <machine/md_var.h> -#include <machine/vmparam.h> void * uma_small_alloc(uma_zone_t zone, vm_size_t bytes, int domain, u_int8_t *flags, diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index a5115c2133b3..f91ab4d43ea7 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -82,16 +82,17 @@ __FBSDID("$FreeBSD$"); #include <sys/vmmeter.h> #include <vm/vm.h> +#include <vm/vm_param.h> #include <vm/vm_domainset.h> #include <vm/vm_object.h> #include <vm/vm_page.h> #include <vm/vm_pageout.h> -#include <vm/vm_param.h> #include <vm/vm_phys.h> #include <vm/vm_pagequeue.h> #include <vm/vm_map.h> #include <vm/vm_kern.h> #include <vm/vm_extern.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> #include <vm/uma_dbg.h> diff --git a/sys/vm/vm_dumpset.h b/sys/vm/vm_dumpset.h new file mode 100644 index 000000000000..6be417344263 --- /dev/null +++ b/sys/vm/vm_dumpset.h @@ -0,0 +1,99 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020, Scott Phillips <scottph@freebsd.org> + * + * 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 <sys/_bitset.h> +#include <sys/bitset.h> + +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_ */ diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 108e35f17c17..751ec5060bfc 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -108,6 +108,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_radix.h> #include <vm/vm_reserv.h> #include <vm/vm_extern.h> +#include <vm/vm_dumpset.h> #include <vm/uma.h> #include <vm/uma_int.h> diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index 9f5c3e8ac577..4c294d2669e2 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -69,8 +69,6 @@ #ifndef _VM_PAGE_ #define _VM_PAGE_ -#include <sys/_bitset.h> -#include <sys/bitset.h> #include <vm/pmap.h> /* @@ -587,69 +585,6 @@ malloc2vm_flags(int malloc_flags) #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); int vm_page_busy_tryupgrade(vm_page_t m); diff --git a/sys/vm/vm_phys.h b/sys/vm/vm_phys.h index 438f83d46e9e..c91e1aa77dc8 100644 --- a/sys/vm/vm_phys.h +++ b/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 { diff --git a/sys/x86/x86/nexus.c b/sys/x86/x86/nexus.c index 91e33fa2278f..2ab891c728c5 100644 --- a/sys/x86/x86/nexus.c +++ b/sys/x86/x86/nexus.c @@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm_page.h> #include <vm/vm_phys.h> +#include <vm/vm_dumpset.h> #include <vm/pmap.h> #include <machine/metadata.h> |
