diff options
author | Jeff Roberson <jeff@FreeBSD.org> | 2019-08-18 07:06:31 +0000 |
---|---|---|
committer | Jeff Roberson <jeff@FreeBSD.org> | 2019-08-18 07:06:31 +0000 |
commit | b7565d44df6d15d8a7487401c2b88d0264c3420b (patch) | |
tree | bc5829ed2e16a40577cdba87a0b46157eba3e53f /sys/vm/vm_page.c | |
parent | f49e79b56bbb0615e5228dacf636f44bbf5a4a00 (diff) | |
download | src-b7565d44df6d15d8a7487401c2b88d0264c3420b.tar.gz src-b7565d44df6d15d8a7487401c2b88d0264c3420b.zip |
Encapsulate phys_avail manipulation in a set of simple routines. Add a
NUMA aware boot time memory allocator that will be used to allocate early
domain correct structures. Code partially submitted by gallatin.
Reviewed by: gallatin, kib
Tested by: pho
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D21251
Notes
Notes:
svn path=/head/; revision=351181
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r-- | sys/vm/vm_page.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index e8797a929055..98367025b63e 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -538,7 +538,7 @@ vm_page_startup(vm_offset_t vaddr) char *list, *listend; vm_offset_t mapped; vm_paddr_t end, high_avail, low_avail, new_end, page_range, size; - vm_paddr_t biggestsize, last_pa, pa; + vm_paddr_t last_pa, pa; u_long pagecount; int biggestone, i, segind; #ifdef WITNESS @@ -548,22 +548,10 @@ vm_page_startup(vm_offset_t vaddr) long ii; #endif - biggestsize = 0; - biggestone = 0; vaddr = round_page(vaddr); - for (i = 0; phys_avail[i + 1]; i += 2) { - phys_avail[i] = round_page(phys_avail[i]); - phys_avail[i + 1] = trunc_page(phys_avail[i + 1]); - } - for (i = 0; phys_avail[i + 1]; i += 2) { - size = phys_avail[i + 1] - phys_avail[i]; - if (size > biggestsize) { - biggestone = i; - biggestsize = size; - } - } - + vm_phys_early_startup(); + biggestone = vm_phys_avail_largest(); end = phys_avail[biggestone+1]; /* @@ -776,7 +764,8 @@ vm_page_startup(vm_offset_t vaddr) * physical pages. */ for (i = 0; phys_avail[i + 1] != 0; i += 2) - vm_phys_add_seg(phys_avail[i], phys_avail[i + 1]); + if (vm_phys_avail_size(i) != 0) + vm_phys_add_seg(phys_avail[i], phys_avail[i + 1]); /* * Initialize the physical memory allocator. |