head 1.4; access; symbols; locks cherry:1.4; strict; comment @# @; 1.4 date 2016.12.22.16.18.14; author cherry; state Exp; branches; next 1.3; 1.3 date 2016.12.22.11.19.46; author cherry; state Exp; branches; next 1.2; 1.2 date 2016.12.22.09.31.46; author cherry; state Exp; branches; next 1.1; 1.1 date 2016.12.19.13.19.31; author cherry; state Exp; branches; next ; desc @Post commit MD stuff for uvm_hotplug(9) @ 1.4 log @This is hopefully the final diff - it's the last chunk that will truly enable the hotplug feature. @ text @Index: arch/acorn26/acorn26/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/acorn26/acorn26/pmap.c,v retrieving revision 1.36 diff -u -r1.36 pmap.c --- arch/acorn26/acorn26/pmap.c 11 May 2012 15:39:17 -0000 1.36 +++ arch/acorn26/acorn26/pmap.c 22 Dec 2016 16:13:10 -0000 @@@@ -293,19 +293,26 @@@@ vaddr_t pmap_steal_memory(vsize_t size, vaddr_t *vstartp, vaddr_t *vendp) { - int i; vaddr_t addr; + uvm_physseg_t bank; + UVMHIST_FUNC("pmap_steal_memory"); UVMHIST_CALLED(pmaphist); addr = 0; size = round_page(size); - for (i = 0; i < vm_nphysseg; i++) { - if (VM_PHYSMEM_PTR(i)->avail_start < VM_PHYSMEM_PTR(i)->avail_end) { + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (uvm_physseg_get_avail_start(bank) < uvm_physseg_get_avail_end(bank)) { + paddr_t avail_start = uvm_physseg_get_avail_start(bank); + addr = (vaddr_t) ((char*)MEMC_PHYS_BASE + - ptoa(VM_PHYSMEM_PTR(i)->avail_start)); - VM_PHYSMEM_PTR(i)->avail_start++; + ptoa(avail_start)); + avail_start++; + uvm_physseg_set_avail_start(avail_start); + break; } } Index: arch/alpha/alpha/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/alpha/alpha/machdep.c,v retrieving revision 1.348 diff -u -r1.348 machdep.c --- arch/alpha/alpha/machdep.c 22 Dec 2016 14:47:54 -0000 1.348 +++ arch/alpha/alpha/machdep.c 22 Dec 2016 16:13:10 -0000 @@@@ -227,7 +227,6 @@@@ struct mddt *mddtp; struct mddt_cluster *memc; int i, mddtweird; - struct vm_physseg *vps; struct pcb *pcb0; vaddr_t kernstart, kernend, v; paddr_t kernstartpfn, kernendpfn, pfn0, pfn1; @@@@ -611,23 +610,24 @@@@ * Initialize error message buffer (at end of core). */ { + paddr_t end; vsize_t sz = (vsize_t)round_page(MSGBUFSIZE); vsize_t reqsz = sz; + uvm_physseg_t bank; - vps = VM_PHYSMEM_PTR(vm_nphysseg - 1); + bank = uvm_physseg_get_last(); /* shrink so that it'll fit in the last segment */ - if ((vps->avail_end - vps->avail_start) < atop(sz)) - sz = ptoa(vps->avail_end - vps->avail_start); + if (uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank) < atop(sz)) + sz = ptoa(uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank)); - vps->end -= atop(sz); - vps->avail_end -= atop(sz); - msgbufaddr = (void *) ALPHA_PHYS_TO_K0SEG(ptoa(vps->end)); - initmsgbuf(msgbufaddr, sz); + end = uvm_physseg_get_end(bank); + end -= atop(sz); + + uvm_physseg_unplug(end, atop(sz)); + msgbufaddr = (void *) ALPHA_PHYS_TO_K0SEG(ptoa(end)); - /* Remove the last segment if it now has no pages. */ - if (vps->start == vps->end) - vm_nphysseg--; + initmsgbuf(msgbufaddr, sz); /* warn if the message buffer had to be shrunk */ if (sz != reqsz) Index: arch/alpha/alpha/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/alpha/alpha/pmap.c,v retrieving revision 1.260 diff -u -r1.260 pmap.c --- arch/alpha/alpha/pmap.c 5 Nov 2015 06:26:15 -0000 1.260 +++ arch/alpha/alpha/pmap.c 22 Dec 2016 16:13:11 -0000 @@@@ -784,8 +784,8 @@@@ * the fact that BSEARCH sorts the vm_physmem[] array * for us. */ - avail_start = ptoa(VM_PHYSMEM_PTR(0)->start); - avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end); + avail_start = ptoa(uvm_physseg_get_avail_start(uvm_physseg_get_first())); + avail_end = ptoa(uvm_physseg_get_avail_end(uvm_physseg_get_last())); virtual_end = VM_MIN_KERNEL_ADDRESS + lev3mapsize * PAGE_SIZE; #if 0 @@@@ -1007,10 +1007,12 @@@@ vaddr_t pmap_steal_memory(vsize_t size, vaddr_t *vstartp, vaddr_t *vendp) { - int bank, npgs, x; + int npgs; vaddr_t va; - paddr_t pa; + paddr_t pa; + uvm_physseg_t bank; + size = round_page(size); npgs = atop(size); @@@@ -1018,50 +1020,36 @@@@ printf("PSM: size 0x%lx (npgs 0x%x)\n", size, npgs); #endif - for (bank = 0; bank < vm_nphysseg; bank++) { + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); #if 0 - printf(" bank %d: avail_start 0x%lx, start 0x%lx, " - "avail_end 0x%lx\n", bank, VM_PHYSMEM_PTR(bank)->avail_start, + printf(" bank %d: avail_start 0x%"PRIxPADDR", start 0x%"PRIxPADDR", " + "avail_end 0x%"PRIxPADDR"\n", bank, VM_PHYSMEM_PTR(bank)->avail_start, VM_PHYSMEM_PTR(bank)->start, VM_PHYSMEM_PTR(bank)->avail_end); #endif - if (VM_PHYSMEM_PTR(bank)->avail_start != VM_PHYSMEM_PTR(bank)->start || - VM_PHYSMEM_PTR(bank)->avail_start >= VM_PHYSMEM_PTR(bank)->avail_end) + if (uvm_physseg_get_avail_start(bank) != uvm_physseg_get_start(bank) || + uvm_physseg_get_avail_start(bank) >= uvm_physseg_get_avail_end(bank)) continue; #if 0 - printf(" avail_end - avail_start = 0x%lx\n", + printf(" avail_end - avail_start = 0x%"PRIxPADDR"\n", VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start); #endif - if ((VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start) + if (uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank) < npgs) continue; /* * There are enough pages here; steal them! */ - pa = ptoa(VM_PHYSMEM_PTR(bank)->avail_start); - VM_PHYSMEM_PTR(bank)->avail_start += npgs; - VM_PHYSMEM_PTR(bank)->start += npgs; - - /* - * Have we used up this segment? - */ - if (VM_PHYSMEM_PTR(bank)->avail_start == VM_PHYSMEM_PTR(bank)->end) { - if (vm_nphysseg == 1) - panic("pmap_steal_memory: out of memory!"); - - /* Remove this segment from the list. */ - vm_nphysseg--; - for (x = bank; x < vm_nphysseg; x++) { - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - } + pa = ptoa(uvm_physseg_get_start(bank)); + uvm_physseg_unplug(atop(pa), npgs); va = ALPHA_PHYS_TO_K0SEG(pa); memset((void *)va, 0, size); Index: arch/amd64/amd64/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/amd64/machdep.c,v retrieving revision 1.241 diff -u -r1.241 machdep.c --- arch/amd64/amd64/machdep.c 22 Dec 2016 14:47:54 -0000 1.241 +++ arch/amd64/amd64/machdep.c 22 Dec 2016 16:13:11 -0000 @@@@ -789,6 +789,7 @@@@ paddr_t p, pstart, pend; struct vm_page *pg; int i; + uvm_physseg_t upm; /* * Mark all memory pages, then unmark pages that are uninteresting. @@@@ -805,10 +806,25 @@@@ setbit(sparse_dump_physmap, p); } } - for (i = 0; i < vm_nphysseg; i++) { - struct vm_physseg *seg = VM_PHYSMEM_PTR(i); + for (upm = uvm_physseg_get_first(); + uvm_physseg_valid_p(upm); + upm = uvm_physseg_get_next(upm)) { + paddr_t pfn; - for (pg = seg->pgs; pg < seg->lastpg; pg++) { + if (uvm_physseg_valid_p(upm) == false) + break; + + const paddr_t startpfn = uvm_physseg_get_start(upm); + const paddr_t endpfn = uvm_physseg_get_end(upm); + + KASSERT(startpfn != -1 && endpfn != -1); + + /* + * We assume that seg->start to seg->end are + * uvm_page_physload()ed + */ + for (pfn = startpfn; pfn <= endpfn; pfn++) { + pg = PHYS_TO_VM_PAGE(ptoa(pfn)); if (pg->uanon || (pg->pqflags & PQ_FREE) || (pg->uobject && pg->uobject->pgops)) { p = VM_PAGE_TO_PHYS(pg) / PAGE_SIZE; @@@@ -1452,57 +1468,30 @@@@ static void init_x86_64_msgbuf(void) { - /* Message buffer is located at end of core. */ - struct vm_physseg *vps; - psize_t sz = round_page(MSGBUFSIZE); - psize_t reqsz = sz; - int x; - - search_again: - vps = NULL; - - for (x = 0; x < vm_nphysseg; x++) { - vps = VM_PHYSMEM_PTR(x); - if (ctob(vps->avail_end) == avail_end) - break; - } - if (x == vm_nphysseg) - panic("init_x86_64: can't find end of memory"); + /* Message buffer is located at end of core. */ + psize_t reqsz = round_page(MSGBUFSIZE); + psize_t sz = 0; - /* Shrink so it'll fit in the last segment. */ - if ((vps->avail_end - vps->avail_start) < atop(sz)) - sz = ctob(vps->avail_end - vps->avail_start); - - vps->avail_end -= atop(sz); - vps->end -= atop(sz); - msgbuf_p_seg[msgbuf_p_cnt].sz = sz; - msgbuf_p_seg[msgbuf_p_cnt++].paddr = ctob(vps->avail_end); - - /* Remove the last segment if it now has no pages. */ - if (vps->start == vps->end) { - for (vm_nphysseg--; x < vm_nphysseg; x++) - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - - /* Now find where the new avail_end is. */ - for (avail_end = 0, x = 0; x < vm_nphysseg; x++) - if (VM_PHYSMEM_PTR(x)->avail_end > avail_end) - avail_end = VM_PHYSMEM_PTR(x)->avail_end; - avail_end = ctob(avail_end); + for (sz = 0; sz < reqsz; sz += PAGE_SIZE) { + paddr_t stolenpa; - if (sz == reqsz) - return; + if (!uvm_page_physget(&stolenpa)) + break; - reqsz -= sz; - if (msgbuf_p_cnt == VM_PHYSSEG_MAX) { - /* No more segments available, bail out. */ - printf("WARNING: MSGBUFSIZE (%zu) too large, using %zu.\n", - (size_t)MSGBUFSIZE, (size_t)(MSGBUFSIZE - reqsz)); - return; + if (stolenpa == (msgbuf_p_seg[msgbuf_p_cnt].paddr + + PAGE_SIZE)) { + /* contiguous: append it to current buf alloc */ + msgbuf_p_seg[msgbuf_p_cnt].sz += PAGE_SIZE; + } else { + /* non-contiguous: start a new msgbuf seg */ + msgbuf_p_seg[msgbuf_p_cnt].sz = PAGE_SIZE; + msgbuf_p_seg[msgbuf_p_cnt++].paddr = stolenpa; + } } - sz = reqsz; - goto search_again; + if (sz != reqsz) + printf("%s: could only allocate %ld bytes of requested %ld bytes\n", + __func__, sz, reqsz); } static void Index: arch/arm/arm32/bus_dma.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm32/bus_dma.c,v retrieving revision 1.96 diff -u -r1.96 bus_dma.c --- arch/arm/arm32/bus_dma.c 5 Nov 2016 14:26:23 -0000 1.96 +++ arch/arm/arm32/bus_dma.c 22 Dec 2016 16:13:11 -0000 @@@@ -1365,11 +1365,11 @@@@ * The page can only be direct mapped if was allocated out * of the arm poolpage vm freelist. */ - int lcv = vm_physseg_find(atop(pa), NULL); - KASSERT(lcv != -1); + uvm_physseg_t upm = uvm_physseg_find(atop(pa), NULL); + KASSERT(uvm_physseg_valid_p(upm)); if (direct_mapable) { direct_mapable = - (arm_poolpage_vmfreelist == VM_PHYSMEM_PTR(lcv)->free_list); + (arm_poolpage_vmfreelist == uvm_physseg_get_free_list(upm)); } #endif Index: arch/arm/arm32/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm32/pmap.c,v retrieving revision 1.341 diff -u -r1.341 pmap.c --- arch/arm/arm32/pmap.c 17 Dec 2016 14:36:29 -0000 1.341 +++ arch/arm/arm32/pmap.c 22 Dec 2016 16:13:11 -0000 @@@@ -6453,8 +6453,8 @@@@ * One could argue whether this should be the entire memory or just * the memory that is useable in a user process. */ - avail_start = ptoa(VM_PHYSMEM_PTR(0)->start); - avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end); + avail_start = ptoa(uvm_physseg_get_avail_start(uvm_physseg_get_first())); + avail_end = ptoa(uvm_physseg_get_avail_end(uvm_physseg_get_last())); /* * Now we need to free enough pv_entry structures to allow us to get Index: arch/i386/i386/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/i386/i386/machdep.c,v retrieving revision 1.771 diff -u -r1.771 machdep.c --- arch/i386/i386/machdep.c 22 Dec 2016 14:47:58 -0000 1.771 +++ arch/i386/i386/machdep.c 22 Dec 2016 16:13:23 -0000 @@@@ -1037,57 +1037,30 @@@@ static void init386_msgbuf(void) { - /* Message buffer is located at end of core. */ - struct vm_physseg *vps; - psize_t sz = round_page(MSGBUFSIZE); - psize_t reqsz = sz; - unsigned int x; - - search_again: - vps = NULL; - for (x = 0; x < vm_nphysseg; ++x) { - vps = VM_PHYSMEM_PTR(x); - if (ctob(vps->avail_end) == avail_end) { - break; - } - } - if (x == vm_nphysseg) - panic("init386: can't find end of memory"); + /* Message buffer is located at end of core. */ + psize_t reqsz = round_page(MSGBUFSIZE); + psize_t sz = 0; - /* Shrink so it'll fit in the last segment. */ - if (vps->avail_end - vps->avail_start < atop(sz)) - sz = ctob(vps->avail_end - vps->avail_start); - - vps->avail_end -= atop(sz); - vps->end -= atop(sz); - msgbuf_p_seg[msgbuf_p_cnt].sz = sz; - msgbuf_p_seg[msgbuf_p_cnt++].paddr = ctob(vps->avail_end); - - /* Remove the last segment if it now has no pages. */ - if (vps->start == vps->end) { - for (--vm_nphysseg; x < vm_nphysseg; x++) - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - - /* Now find where the new avail_end is. */ - for (avail_end = 0, x = 0; x < vm_nphysseg; x++) - if (VM_PHYSMEM_PTR(x)->avail_end > avail_end) - avail_end = VM_PHYSMEM_PTR(x)->avail_end; - avail_end = ctob(avail_end); + for (sz = 0; sz < reqsz; sz += PAGE_SIZE) { + paddr_t stolenpa; - if (sz == reqsz) - return; + if (!uvm_page_physget(&stolenpa)) + break; - reqsz -= sz; - if (msgbuf_p_cnt == VM_PHYSSEG_MAX) { - /* No more segments available, bail out. */ - printf("WARNING: MSGBUFSIZE (%zu) too large, using %zu.\n", - (size_t)MSGBUFSIZE, (size_t)(MSGBUFSIZE - reqsz)); - return; + if (stolenpa == (msgbuf_p_seg[msgbuf_p_cnt].paddr + + PAGE_SIZE)) { + /* contiguous: append it to current buf alloc */ + msgbuf_p_seg[msgbuf_p_cnt].sz += PAGE_SIZE; + } else { + /* non-contiguous: start a new msgbuf seg */ + msgbuf_p_seg[msgbuf_p_cnt].sz = PAGE_SIZE; + msgbuf_p_seg[msgbuf_p_cnt++].paddr = stolenpa; + } } - sz = reqsz; - goto search_again; + if (sz != reqsz) + printf("%s: could only allocate %ld bytes of requested %ld bytes\n", + __func__, sz, reqsz); } #ifndef XEN Index: arch/ia64/ia64/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/ia64/ia64/machdep.c,v retrieving revision 1.36 diff -u -r1.36 machdep.c --- arch/ia64/ia64/machdep.c 22 Dec 2016 14:47:58 -0000 1.36 +++ arch/ia64/ia64/machdep.c 22 Dec 2016 16:13:23 -0000 @@@@ -175,18 +175,19 @@@@ * Display any holes after the first chunk of extended memory. */ if (bootverbose) { - int lcv, sizetmp; - + int sizetmp, vm_nphysseg; + uvm_physseg_t upm; + printf("Physical memory chunk(s):\n"); - for (lcv = 0; - lcv < vm_nphysseg || VM_PHYSMEM_PTR(lcv)->avail_end != 0; - lcv++) { - sizetmp = VM_PHYSMEM_PTR(lcv)->avail_end - - VM_PHYSMEM_PTR(lcv)->avail_start; + for (vm_nphysseg = 0, upm = uvm_physseg_get_first(); + uvm_physseg_valid_p(upm); + vm_nphysseg++, upm = uvm_physseg_get_next(upm)) { + sizetmp = uvm_physseg_get_avail_end(upm) - + uvm_physseg_get_avail_start(upm); printf("0x%016lx - 0x%016lx, %ld bytes (%d pages)\n", - ptoa(VM_PHYSMEM_PTR(lcv)->avail_start), - ptoa(VM_PHYSMEM_PTR(lcv)->avail_end) - 1, + ptoa(uvm_physseg_get_avail_start(upm)), + ptoa(uvm_physseg_get_avail_end(upm)) - 1, ptoa(sizetmp), sizetmp); } printf("Total number of segments: vm_nphysseg = %d \n", @@@@ -467,7 +468,6 @@@@ uvmexp.pagesize = PAGE_SIZE; uvm_md_init(); - /* * Find out how much memory is available, by looking at * the memory descriptors. Index: arch/ia64/ia64/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/ia64/ia64/pmap.c,v retrieving revision 1.32 diff -u -r1.32 pmap.c --- arch/ia64/ia64/pmap.c 10 Mar 2014 13:47:45 -0000 1.32 +++ arch/ia64/ia64/pmap.c 22 Dec 2016 16:13:23 -0000 @@@@ -94,6 +94,7 @@@@ #include #include +#include #include #include @@@@ -316,47 +317,33 @@@@ vaddr_t pmap_steal_memory(vsize_t size, vaddr_t *vstartp, vaddr_t *vendp) { - int lcv, npgs, x; + int npgs; + uvm_physseg_t upm; vaddr_t va; paddr_t pa; size = round_page(size); npgs = atop(size); - for (lcv = 0; lcv < vm_nphysseg; lcv++) { + for (upm = uvm_physseg_get_first(); + uvm_physseg_valid_p(upm); + upm = uvm_physseg_get_next(upm)) { if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); - if (VM_PHYSMEM_PTR(lcv)->avail_start != VM_PHYSMEM_PTR(lcv)->start || - VM_PHYSMEM_PTR(lcv)->avail_start >= VM_PHYSMEM_PTR(lcv)->avail_end) + if (uvm_physseg_get_avail_start(upm) != uvm_physseg_get_start(upm) || + uvm_physseg_get_avail_start(upm) >= uvm_physseg_get_avail_end(upm)) continue; - if ((VM_PHYSMEM_PTR(lcv)->avail_end - VM_PHYSMEM_PTR(lcv)->avail_start) + if ((uvm_physseg_get_avail_end(upm) - uvm_physseg_get_avail_start(upm)) < npgs) continue; /* * There are enough pages here; steal them! */ - pa = ptoa(VM_PHYSMEM_PTR(lcv)->avail_start); - VM_PHYSMEM_PTR(lcv)->avail_start += npgs; - VM_PHYSMEM_PTR(lcv)->start += npgs; - - /* - * Have we used up this segment? - */ - if (VM_PHYSMEM_PTR(lcv)->avail_start == - VM_PHYSMEM_PTR(lcv)->end) { - if (vm_nphysseg == 1) - panic("pmap_steal_memory: out of memory!"); - - /* Remove this segment from the list. */ - vm_nphysseg--; - for (x = lcv; x < vm_nphysseg; x++) { - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - } + pa = ptoa(uvm_physseg_get_start(bank)); + uvm_physseg_unplug(atop(pa), npgs); va = IA64_PHYS_TO_RR7(pa); memset((void *)va, 0, size); @@@@ -380,31 +367,34 @@@@ static vaddr_t pmap_steal_vhpt_memory(vsize_t size) { - int lcv, npgs, x; + int npgs; + uvm_physseg_t upm; vaddr_t va; - paddr_t pa; + paddr_t tmppa, pa = 0; paddr_t vhpt_start = 0, start1, start2, end1, end2; size = round_page(size); npgs = atop(size); - for (lcv = 0; lcv < vm_nphysseg; lcv++) { + for (upm = uvm_physseg_get_first(); + uvm_physseg_valid_p(upm); + upm = uvm_physseg_get_next(upm)) { if (uvm.page_init_done == true) panic("pmap_vhpt_steal_memory: called _after_ bootstrap"); - if (VM_PHYSMEM_PTR(lcv)->avail_start != VM_PHYSMEM_PTR(lcv)->start || /* XXX: ??? */ - VM_PHYSMEM_PTR(lcv)->avail_start >= VM_PHYSMEM_PTR(lcv)->avail_end) + if (uvm_physseg_get_avail_start(upm) != uvm_physseg_get_start(upm) || /* XXX: ??? */ + uvm_physseg_get_avail_start(upm) >= uvm_physseg_get_avail_end(upm)) continue; /* Break off a VHPT sized, aligned chunk off this segment. */ - start1 = VM_PHYSMEM_PTR(lcv)->avail_start; + start1 = uvm_physseg_get_avail_start(upm); /* Align requested start address on requested size boundary */ end1 = vhpt_start = roundup(start1, npgs); start2 = vhpt_start + npgs; - end2 = VM_PHYSMEM_PTR(lcv)->avail_end; + end2 = uvm_physseg_get_avail_end(upm); /* Case 1: Doesn't fit. skip this segment */ @@@@ -423,7 +413,7 @@@@ */ if (start1 == end1 && start2 == end2 && - vm_nphysseg == 1) { + uvm_physseg_get_first() == uvm_physseg_get_last() /* single segment */) { #ifdef DEBUG printf("pmap_vhpt_steal_memory: out of memory!"); #endif @@@@ -431,11 +421,13 @@@@ } /* Remove this segment from the list. */ - vm_nphysseg--; - for (x = lcv; x < vm_nphysseg; x++) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - + if (uvm_physseg_unplug(uvm_physseg_get_start(upm), + uvm_physseg_get_end(upm) - uvm_physseg_get_start(upm)) == false) { + panic("%s: uvm_physseg_unplug(%"PRIxPADDR", %"PRIxPADDR") failed\n", + __func__, uvm_physseg_get_start(upm), + uvm_physseg_get_end(upm) - uvm_physseg_get_start(upm)); + } + /* Case 2: Perfect fit - skip segment reload. */ if (start1 == end1 && start2 == end2) break; Index: arch/luna68k/luna68k/pmap_bootstrap.c =================================================================== RCS file: /cvsroot/src/sys/arch/luna68k/luna68k/pmap_bootstrap.c,v retrieving revision 1.37 diff -u -r1.37 pmap_bootstrap.c --- arch/luna68k/luna68k/pmap_bootstrap.c 22 Dec 2016 16:05:15 -0000 1.37 +++ arch/luna68k/luna68k/pmap_bootstrap.c 22 Dec 2016 16:13:23 -0000 @@@@ -1,4 +1,4 @@@@ -/* $NetBSD: pmap_bootstrap.c,v 1.37 2016/12/22 16:05:15 cherry Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.36 2013/01/26 15:46:24 tsutsui Exp $ */ /* * Copyright (c) 1991, 1993 @@@@ -36,7 +36,7 @@@@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.37 2016/12/22 16:05:15 cherry Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.36 2013/01/26 15:46:24 tsutsui Exp $"); #include "opt_m68k_arch.h" Index: arch/m68k/m68k/pmap_motorola.c =================================================================== RCS file: /cvsroot/src/sys/arch/m68k/m68k/pmap_motorola.c,v retrieving revision 1.68 diff -u -r1.68 pmap_motorola.c --- arch/m68k/m68k/pmap_motorola.c 22 Dec 2016 14:47:58 -0000 1.68 +++ arch/m68k/m68k/pmap_motorola.c 22 Dec 2016 16:13:24 -0000 @@@@ -133,6 +133,7 @@@@ #include #include +#include #include @@@@ -295,10 +296,11 @@@@ static inline struct pv_header * pa_to_pvh(paddr_t pa) { - int bank, pg = 0; /* XXX gcc4 -Wuninitialized */ - - bank = vm_physseg_find(atop((pa)), &pg); - return &VM_PHYSMEM_PTR(bank)->pmseg.pvheader[pg]; + uvm_physseg_t bank = 0; /* XXX gcc4 -Wuninitialized */ + psize_t pg = 0; + + bank = uvm_physseg_find(atop((pa)), &pg); + return &uvm_physseg_get_pmseg(bank)->pvheader[pg]; } /* @@@@ -412,7 +414,7 @@@@ struct pv_header *pvh; int rv; int npages; - int bank; + uvm_physseg_t bank; PMAP_DPRINTF(PDB_FOLLOW, ("pmap_init()\n")); @@@@ -434,8 +436,10 @@@@ * Allocate memory for random pmap data structures. Includes the * initial segment table, pv_head_table and pmap_attributes. */ - for (page_cnt = 0, bank = 0; bank < vm_nphysseg; bank++) - page_cnt += VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start; + for (page_cnt = 0, bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) + page_cnt += uvm_physseg_get_end(bank) - uvm_physseg_get_start(bank); s = M68K_STSIZE; /* Segtabzero */ s += page_cnt * sizeof(struct pv_header); /* pv table */ s = round_page(s); @@@@ -461,9 +465,11 @@@@ * assign them to the memory segments. */ pvh = pv_table; - for (bank = 0; bank < vm_nphysseg; bank++) { - npages = VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start; - VM_PHYSMEM_PTR(bank)->pmseg.pvheader = pvh; + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + npages = uvm_physseg_get_end(bank) - uvm_physseg_get_start(bank); + uvm_physseg_get_pmseg(bank)->pvheader = pvh; pvh += npages; } @@@@ -1704,17 +1710,20 @@@@ static void pmap_collect(void) { - int bank, s; - + int s; + uvm_physseg_t bank; + /* * XXX This is very bogus. We should handle kernel PT * XXX pages much differently. */ s = splvm(); - for (bank = 0; bank < vm_nphysseg; bank++) { - pmap_collect1(pmap_kernel(), ptoa(VM_PHYSMEM_PTR(bank)->start), - ptoa(VM_PHYSMEM_PTR(bank)->end)); + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + pmap_collect1(pmap_kernel(), ptoa(uvm_physseg_get_start(bank)), + ptoa(uvm_physseg_get_end(bank))); } splx(s); } Index: arch/mips/include/pmap.h =================================================================== RCS file: /cvsroot/src/sys/arch/mips/include/pmap.h,v retrieving revision 1.68 diff -u -r1.68 pmap.h --- arch/mips/include/pmap.h 11 Jul 2016 16:15:35 -0000 1.68 +++ arch/mips/include/pmap.h 22 Dec 2016 16:13:25 -0000 @@@@ -116,7 +116,7 @@@@ #define PMAP_SEGTAB_ALIGN __aligned(sizeof(void *)*NSEGPG) __section(".data1") #endif -struct vm_physseg; +#include void pmap_md_init(void); void pmap_md_icache_sync_all(void); @@@@ -125,7 +125,7 @@@@ bool pmap_md_vca_add(struct vm_page *, vaddr_t, pt_entry_t *); void pmap_md_vca_clean(struct vm_page *, int); void pmap_md_vca_remove(struct vm_page *, vaddr_t, bool, bool); -bool pmap_md_ok_to_steal_p(const struct vm_physseg *, size_t); +bool pmap_md_ok_to_steal_p(const uvm_physseg_t, size_t); bool pmap_md_tlb_check_entry(void *, vaddr_t, tlb_asid_t, pt_entry_t); static inline bool Index: arch/mips/mips/mips_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mips/mips/mips_machdep.c,v retrieving revision 1.275 diff -u -r1.275 mips_machdep.c --- arch/mips/mips/mips_machdep.c 22 Dec 2016 07:56:38 -0000 1.275 +++ arch/mips/mips/mips_machdep.c 22 Dec 2016 16:13:26 -0000 @@@@ -145,6 +145,7 @@@@ #endif #include +#include #include #include @@@@ -2008,38 +2009,34 @@@@ { vsize_t sz = (vsize_t)round_page(MSGBUFSIZE); vsize_t reqsz = sz; - u_int bank = vm_nphysseg - 1; - struct vm_physseg *vps = VM_PHYSMEM_PTR(bank); + uvm_physseg_t bank = uvm_physseg_get_last(); #ifndef _LP64 /* * Fist the physical segment that can be mapped to KSEG0 */ - for (; vps >= vm_physmem; vps--, bank--) { - if (vps->avail_start + atop(sz) <= atop(MIPS_PHYS_MASK)) + for (; uvm_physseg_valid_p(bank); bank = uvm_physseg_get_prev(bank)) { + if (uvm_physseg_get_avail_start(bank) + atop(sz) <= atop(MIPS_PHYS_MASK)) break; } #endif + paddr_t start = uvm_physseg_get_start(bank); + paddr_t end = uvm_physseg_get_end(bank); + /* shrink so that it'll fit in the last segment */ - if ((vps->avail_end - vps->avail_start) < atop(sz)) - sz = ptoa(vps->avail_end - vps->avail_start); + if ((end - start) < atop(sz)) + sz = ptoa(end - start); - vps->end -= atop(sz); - vps->avail_end -= atop(sz); + end -= atop(sz); + uvm_physseg_unplug(end, atop(sz)); + #ifdef _LP64 - msgbufaddr = (void *) MIPS_PHYS_TO_XKPHYS_CACHED(ptoa(vps->end)); + msgbufaddr = (void *) MIPS_PHYS_TO_XKPHYS_CACHED(ptoa(end)); #else - msgbufaddr = (void *) MIPS_PHYS_TO_KSEG0(ptoa(vps->end)); + msgbufaddr = (void *) MIPS_PHYS_TO_KSEG0(ptoa(end)); #endif initmsgbuf(msgbufaddr, sz); - /* Remove the [last] segment if it now has no pages. */ - if (vps->start == vps->end) { - for (vm_nphysseg--; bank < vm_nphysseg - 1; bank++) { - VM_PHYSMEM_PTR_SWAP(bank, bank + 1); - } - } - /* warn if the message buffer had to be shrunk */ if (sz != reqsz) printf("WARNING: %"PRIdVSIZE" bytes not available for msgbuf " Index: arch/mips/mips/pmap_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mips/mips/pmap_machdep.c,v retrieving revision 1.11 diff -u -r1.11 pmap_machdep.c --- arch/mips/mips/pmap_machdep.c 5 Sep 2016 06:59:25 -0000 1.11 +++ arch/mips/mips/pmap_machdep.c 22 Dec 2016 16:13:26 -0000 @@@@ -133,6 +133,7 @@@@ #endif #include +#include #include #include @@@@ -306,12 +307,12 @@@@ } bool -pmap_md_ok_to_steal_p(const struct vm_physseg *seg, size_t npgs) +pmap_md_ok_to_steal_p(const uvm_physseg_t bank, size_t npgs) { #ifndef _LP64 - if (seg->avail_start + npgs >= atop(MIPS_PHYS_MASK + 1)) { - aprint_debug("%s: seg %zu: not enough in KSEG0 for %zu pages\n", - __func__, seg - VM_PHYSMEM_PTR(0), npgs); + if (uvm_physseg_get_avail_start(bank) + npgs >= atop(MIPS_PHYS_MASK + 1)) { + aprint_debug("%s: seg not enough in KSEG0 for %zu pages\n", + __func__, npgs); return false; } #endif @@@@ -393,8 +394,8 @@@@ * for us. Must do this before uvm_pageboot_alloc() * can be called. */ - pmap_limits.avail_start = ptoa(VM_PHYSMEM_PTR(0)->start); - pmap_limits.avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end); + pmap_limits.avail_start = ptoa(uvm_physseg_get_start(uvm_physseg_get_first())); + pmap_limits.avail_end = ptoa(uvm_physseg_get_end(uvm_physseg_get_last())); pmap_limits.virtual_end = pmap_limits.virtual_start + (vaddr_t)sysmap_size * NBPG; #ifndef _LP64 Index: arch/powerpc/ibm4xx/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/pmap.c,v retrieving revision 1.73 diff -u -r1.73 pmap.c --- arch/powerpc/ibm4xx/pmap.c 22 Dec 2016 14:47:58 -0000 1.73 +++ arch/powerpc/ibm4xx/pmap.c 22 Dec 2016 16:13:27 -0000 @@@@ -199,7 +199,7 @@@@ { int bank, pg; - bank = vm_physseg_find(atop(pa), &pg); + bank = uvm_physseg_find(atop(pa), &pg); if (bank == -1) return NULL; return &VM_PHYSMEM_PTR(bank)->pmseg.pvent[pg]; @@@@ -210,7 +210,7 @@@@ { int bank, pg; - bank = vm_physseg_find(atop(pa), &pg); + bank = uvm_physseg_find(atop(pa), &pg); if (bank == -1) return NULL; return &VM_PHYSMEM_PTR(bank)->pmseg.attrs[pg]; Index: arch/powerpc/isa/isadma_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/isa/isadma_machdep.c,v retrieving revision 1.10 diff -u -r1.10 isadma_machdep.c --- arch/powerpc/isa/isadma_machdep.c 26 Feb 2016 18:17:39 -0000 1.10 +++ arch/powerpc/isa/isadma_machdep.c 22 Dec 2016 16:13:27 -0000 @@@@ -168,9 +168,11 @@@@ size_t cookiesize; paddr_t avail_end = 0; - for (bank = 0; bank < vm_nphysseg; bank++) { - if (avail_end < VM_PHYSMEM_PTR(bank)->avail_end << PGSHIFT) - avail_end = VM_PHYSMEM_PTR(bank)->avail_end << PGSHIFT; + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (avail_end < uvm_physseg_get_avail_end(bank) << PGSHIFT) + avail_end = uvm_physseg_get_avail_end(bank) << PGSHIFT; } /* Call common function to create the basic map. */ @@@@ -598,9 +600,11 @@@@ paddr_t high, avail_end = 0; int bank; - for (bank = 0; bank < vm_nphysseg; bank++) { - if (avail_end < VM_PHYSMEM_PTR(bank)->avail_end << PGSHIFT) - avail_end = VM_PHYSMEM_PTR(bank)->avail_end << PGSHIFT; + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (avail_end < uvm_physseg_get_avail_end(bank) << PGSHIFT) + avail_end = uvm_physseg_get_avail_end(bank) << PGSHIFT; } if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) Index: arch/powerpc/oea/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/oea/pmap.c,v retrieving revision 1.93 diff -u -r1.93 pmap.c --- arch/powerpc/oea/pmap.c 14 Feb 2016 18:07:49 -0000 1.93 +++ arch/powerpc/oea/pmap.c 22 Dec 2016 16:13:27 -0000 @@@@ -81,6 +81,7 @@@@ #include #include +#include #include #include @@@@ -2909,9 +2910,9 @@@@ { vsize_t size; vaddr_t va; - paddr_t pa = 0; - int npgs, bank; - struct vm_physseg *ps; + paddr_t start, end, pa = 0; + int npgs, freelist; + uvm_physseg_t bank; if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); @@@@ -2926,11 +2927,18 @@@@ * PA 0 will never be among those given to UVM so we can use it * to indicate we couldn't steal any memory. */ - for (bank = 0; bank < vm_nphysseg; bank++) { - ps = VM_PHYSMEM_PTR(bank); - if (ps->free_list == VM_FREELIST_FIRST256 && - ps->avail_end - ps->avail_start >= npgs) { - pa = ptoa(ps->avail_start); + + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + + freelist = uvm_physseg_get_free_list(bank); + start = uvm_physseg_get_start(bank); + end = uvm_physseg_get_end(bank); + + if (freelist == VM_FREELIST_FIRST256 && + (end - start) >= npgs) { + pa = ptoa(start); break; } } @@@@ -2938,25 +2946,7 @@@@ if (pa == 0) panic("pmap_steal_memory: no approriate memory to steal!"); - ps->avail_start += npgs; - ps->start += npgs; - - /* - * If we've used up all the pages in the segment, remove it and - * compact the list. - */ - if (ps->avail_start == ps->end) { - /* - * If this was the last one, then a very bad thing has occurred - */ - if (--vm_nphysseg == 0) - panic("pmap_steal_memory: out of memory!"); - - printf("pmap_steal_memory: consumed bank %d\n", bank); - for (; bank < vm_nphysseg; bank++, ps++) { - ps[0] = ps[1]; - } - } + uvm_physseg_unplug(start, npgs); va = (vaddr_t) pa; memset((void *) va, 0, size); @@@@ -2964,9 +2954,10 @@@@ #ifdef DEBUG if (pmapdebug && npgs > 1) { u_int cnt = 0; - for (bank = 0; bank < vm_nphysseg; bank++) { - ps = VM_PHYSMEM_PTR(bank); - cnt += ps->avail_end - ps->avail_start; + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + cnt += uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank); } printf("pmap_steal_memory: stole %u (total %u) pages (%u left)\n", npgs, pmap_pages_stolen, cnt); @@@@ -3446,15 +3437,18 @@@@ #ifdef DEBUG if (pmapdebug & PMAPDEBUG_BOOT) { u_int cnt; - int bank; + uvm_physseg_t bank; char pbuf[9]; - for (cnt = 0, bank = 0; bank < vm_nphysseg; bank++) { - cnt += VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start; + for (cnt = 0, bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + cnt += uvm_physseg_get_avail_end(bank) - + uvm_physseg_get_avail_start(bank); printf("pmap_bootstrap: vm_physmem[%d]=%#" _PRIxpa "-%#" _PRIxpa "/%#" _PRIxpa "\n", bank, - ptoa(VM_PHYSMEM_PTR(bank)->avail_start), - ptoa(VM_PHYSMEM_PTR(bank)->avail_end), - ptoa(VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start)); + ptoa(uvm_physseg_get_avail_start(bank)), + ptoa(uvm_physseg_get_avail_end(bank)), + ptoa(uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank))); } format_bytes(pbuf, sizeof(pbuf), ptoa((u_int64_t) cnt)); printf("pmap_bootstrap: UVM memory = %s (%u pages)\n", Index: arch/powerpc/powerpc/bus_dma.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/powerpc/bus_dma.c,v retrieving revision 1.46 diff -u -r1.46 bus_dma.c --- arch/powerpc/powerpc/bus_dma.c 1 Feb 2012 09:54:03 -0000 1.46 +++ arch/powerpc/powerpc/bus_dma.c 22 Dec 2016 16:13:27 -0000 @@@@ -45,6 +45,7 @@@@ #include #include +#include #ifdef PPC_BOOKE #define EIEIO __asm volatile("mbar\t0") @@@@ -544,13 +545,15 @@@@ _bus_dmamem_alloc(bus_dma_tag_t t, bus_size_t size, bus_size_t alignment, bus_size_t boundary, bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags) { paddr_t start = 0xffffffff, end = 0; - int bank; + uvm_physseg_t bank; - for (bank = 0; bank < vm_nphysseg; bank++) { - if (start > ptoa(VM_PHYSMEM_PTR(bank)->avail_start)) - start = ptoa(VM_PHYSMEM_PTR(bank)->avail_start); - if (end < ptoa(VM_PHYSMEM_PTR(bank)->avail_end)) - end = ptoa(VM_PHYSMEM_PTR(bank)->avail_end); + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (start > ptoa(uvm_physseg_get_avail_start(bank))) + start = ptoa(uvm_physseg_get_avail_start(bank)); + if (end < ptoa(uvm_physseg_get_avail_end(bank))) + end = ptoa(uvm_physseg_get_avail_end(bank)); } return _bus_dmamem_alloc_range(t, size, alignment, boundary, segs, Index: arch/sh3/sh3/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sh3/sh3/pmap.c,v retrieving revision 1.78 diff -u -r1.78 pmap.c --- arch/sh3/sh3/pmap.c 3 Sep 2016 09:07:54 -0000 1.78 +++ arch/sh3/sh3/pmap.c 22 Dec 2016 16:13:27 -0000 @@@@ -39,6 +39,7 @@@@ #include /* XXX: for sock_loan_thresh */ #include +#include #include #include @@@@ -107,8 +108,8 @@@@ /* Steal msgbuf area */ initmsgbuf((void *)uvm_pageboot_alloc(MSGBUFSIZE), MSGBUFSIZE); - avail_start = ptoa(VM_PHYSMEM_PTR(0)->start); - avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end); + avail_start = ptoa(uvm_physseg_get_start(uvm_physseg_get_first())); + avail_end = ptoa(uvm_physseg_get_end(uvm_physseg_get_last())); __pmap_kve = VM_MIN_KERNEL_ADDRESS; pmap_kernel()->pm_refcnt = 1; @@@@ -126,39 +127,28 @@@@ vaddr_t pmap_steal_memory(vsize_t size, vaddr_t *vstart, vaddr_t *vend) { - struct vm_physseg *bank; - int i, j, npage; + int npage; paddr_t pa; vaddr_t va; + uvm_physseg_t bank; KDASSERT(!uvm.page_init_done); size = round_page(size); npage = atop(size); - bank = NULL; - for (i = 0; i < vm_nphysseg; i++) { - bank = VM_PHYSMEM_PTR(i); - if (npage <= bank->avail_end - bank->avail_start) + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (npage <= uvm_physseg_get_end(bank) - uvm_physseg_get_start(bank)) break; } - KDASSERT(i != vm_nphysseg); - KDASSERT(bank != NULL); - /* Steal pages */ - pa = ptoa(bank->avail_start); - bank->avail_start += npage; - bank->start += npage; - - /* GC memory bank */ - if (bank->avail_start == bank->end) { - /* Remove this segment from the list. */ - vm_nphysseg--; - KDASSERT(vm_nphysseg > 0); - for (j = i; i < vm_nphysseg; j++) - VM_PHYSMEM_PTR_SWAP(j, j + 1); - } + KDASSERT(uvm_physseg_valid_p(bank)); + /* Steal pages */ + pa = ptoa(uvm_physseg_get_start(bank)); + uvm_physseg_unplug(start, npage); va = SH3_PHYS_TO_P1SEG(pa); memset((void *)va, 0, size); Index: arch/sh3/sh3/vm_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sh3/sh3/vm_machdep.c,v retrieving revision 1.76 diff -u -r1.76 vm_machdep.c --- arch/sh3/sh3/vm_machdep.c 7 Nov 2013 21:45:04 -0000 1.76 +++ arch/sh3/sh3/vm_machdep.c 22 Dec 2016 16:13:27 -0000 @@@@ -102,6 +102,7 @@@@ #include #include +#include #include #include @@@@ -387,7 +388,7 @@@@ mm_md_physacc(paddr_t pa, vm_prot_t prot) { - if (atop(pa) < vm_physmem[0].start || PHYS_TO_VM_PAGE(pa) != NULL) { + if (atop(pa) < uvm_physseg_get_start(uvm_physseg_get_first()) || PHYS_TO_VM_PAGE(pa) != NULL) { return 0; } return EFAULT; Index: arch/vax/vax/ka650.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/ka650.c,v retrieving revision 1.36 diff -u -r1.36 ka650.c --- arch/vax/vax/ka650.c 14 Dec 2010 23:44:49 -0000 1.36 +++ arch/vax/vax/ka650.c 22 Dec 2016 16:13:31 -0000 @@@@ -106,7 +106,7 @@@@ ka650setcache(CACHEON); if (ctob(physmem) > ka650merr_ptr->merr_qbmbr) { - printf("physmem(0x%x) > qbmbr(0x%x)\n", + printf("physmem(%"PRIxPSIZE") > qbmbr(0x%x)\n", ctob(physmem), (int)ka650merr_ptr->merr_qbmbr); panic("qbus map unprotected"); } Index: arch/vax/vax/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/pmap.c,v retrieving revision 1.183 diff -u -r1.183 pmap.c --- arch/vax/vax/pmap.c 22 Dec 2016 14:48:00 -0000 1.183 +++ arch/vax/vax/pmap.c 22 Dec 2016 16:13:31 -0000 @@@@ -51,6 +51,7 @@@@ #include #include +#include #ifdef PMAPDEBUG #include @@@@ -475,7 +476,8 @@@@ { vaddr_t v; int npgs; - + uvm_physseg_t bank; + PMDEBUG(("pmap_steal_memory: size 0x%lx start %p end %p\n", size, vstartp, vendp)); @@@@ -490,10 +492,10 @@@@ /* * A vax only have one segment of memory. */ + bank = uvm_physseg_get_first(); - v = (VM_PHYSMEM_PTR(0)->avail_start << PGSHIFT) | KERNBASE; - VM_PHYSMEM_PTR(0)->avail_start += npgs; - VM_PHYSMEM_PTR(0)->start += npgs; + v = (uvm_physseg_get_start(bank) << PGSHIFT) | KERNBASE; + uvm_physseg_unplug(uvm_physseg_get_start(bank), npgs); memset((void *)v, 0, size); return v; } Index: arch/x68k/x68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/x68k/x68k/machdep.c,v retrieving revision 1.194 diff -u -r1.194 machdep.c --- arch/x68k/x68k/machdep.c 2 Dec 2016 12:43:07 -0000 1.194 +++ arch/x68k/x68k/machdep.c 22 Dec 2016 16:13:33 -0000 @@@@ -102,6 +102,7 @@@@ #define MAXMEM 64*1024 /* XXX - from cmap.h */ #include +#include #include #include @@@@ -553,10 +554,7 @@@@ { cpu_kcore_hdr_t *h = &cpu_kcore_hdr; struct m68k_kcore_hdr *m = &h->un._m68k; - psize_t size; -#ifdef EXTENDED_MEMORY - int i, seg; -#endif + uvm_physseg_t i; memset(&cpu_kcore_hdr, 0, sizeof(cpu_kcore_hdr)); @@@@ -605,20 +603,25 @@@@ /* * X68k has multiple RAM segments on some models. */ - size = phys_basemem_seg.end - phys_basemem_seg.start; - m->ram_segs[0].start = phys_basemem_seg.start; - m->ram_segs[0].size = size; -#ifdef EXTENDED_MEMORY - seg = 1; - for (i = 0; i < EXTMEM_SEGS; i++) { - size = phys_extmem_seg[i].end - phys_extmem_seg[i].start; - if (size == 0) - continue; - m->ram_segs[seg].start = phys_extmem_seg[i].start; - m->ram_segs[seg].size = size; - seg++; + m->ram_segs[0].start = lowram; + m->ram_segs[0].size = mem_size - lowram; + + i = uvm_physseg_get_first(); + + for (uvm_physseg_get_next(i); uvm_physseg_valid_p(i); i = uvm_physseg_get_next(i)) { + if (uvm_physseg_valid_p(i) == false) + break; + + const paddr_t startpfn = uvm_physseg_get_start(i); + const paddr_t endpfn = uvm_physseg_get_end(i); + + KASSERT(startpfn != -1 && endpfn != -1); + + m->ram_segs[i].start = + ctob(startpfn); + m->ram_segs[i].size = + ctob(endpfn - startpfn); } -#endif } /* @@@@ -1249,11 +1252,14 @@@@ int mm_md_physacc(paddr_t pa, vm_prot_t prot) { - int i; + uvm_physseg_t i; + + for (i = uvm_physseg_get_first(); uvm_physseg_valid_p(i); i = uvm_physseg_get_next(i)) { + if (uvm_physseg_valid_p(i) == false) + break; - for (i = 0; i < vm_nphysseg; i++) { - if (ctob(vm_physmem[i].start) <= pa && - pa < ctob(vm_physmem[i].end)) + if (ctob(uvm_physseg_get_start(i)) <= pa && + pa < ctob(uvm_physseg_get_end(i))) return 0; } return EFAULT; Index: uvm/files.uvm =================================================================== RCS file: /cvsroot/src/sys/uvm/files.uvm,v retrieving revision 1.27 diff -u -r1.27 files.uvm --- uvm/files.uvm 1 Dec 2016 02:09:03 -0000 1.27 +++ uvm/files.uvm 22 Dec 2016 16:13:39 -0000 @@@@ -15,6 +15,7 @@@@ defflag PDPOLICY_CLOCKPRO defparam USER_VA0_DISABLE_DEFAULT defflag opt_uvm_page_trkown.h UVM_PAGE_TRKOWN +defflag opt_uvm_hotplug.h UVM_HOTPLUG define uvm defflag opt_uvm.h UVM @@@@ -42,6 +43,7 @@@@ file uvm/uvm_pdpolicy_clock.c !pdpolicy_clockpro file uvm/uvm_pdpolicy_clockpro.c pdpolicy_clockpro file uvm/uvm_pglist.c uvm +file uvm/uvm_physseg.c uvm file uvm/uvm_readahead.c uvm file uvm/uvm_stat.c uvm file uvm/uvm_swap.c vmswap Index: uvm/uvm_init.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_init.c,v retrieving revision 1.47 diff -u -r1.47 uvm_init.c --- uvm/uvm_init.c 22 Dec 2016 12:55:21 -0000 1.47 +++ uvm/uvm_init.c 22 Dec 2016 16:13:39 -0000 @@@@ -46,6 +46,7 @@@@ #include #include +#include #include /* @@@@ -77,6 +78,7 @@@@ uvm_md_init(void) { uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); } /* Index: uvm/uvm_page.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_page.c,v retrieving revision 1.189 diff -u -r1.189 uvm_page.c --- uvm/uvm_page.c 22 Dec 2016 16:05:15 -0000 1.189 +++ uvm/uvm_page.c 22 Dec 2016 16:13:39 -0000 @@@@ -1,4 +1,4 @@@@ -/* $NetBSD: uvm_page.c,v 1.189 2016/12/22 16:05:15 cherry Exp $ */ +/* $NetBSD: uvm_page.c,v 1.188 2016/12/22 13:26:25 cherry Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@@@ -66,7 +66,7 @@@@ */ #include -__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.189 2016/12/22 16:05:15 cherry Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.188 2016/12/22 13:26:25 cherry Exp $"); #include "opt_ddb.h" #include "opt_uvm.h" @@@@ -81,24 +81,13 @@@@ #include #include #include +#include #include #include #include /* - * global vars... XXXCDC: move to uvm. structure. - */ - -/* - * physical memory config is stored in vm_physmem. - */ - -struct vm_physseg vm_physmem[VM_PHYSSEG_MAX]; /* XXXCDC: uvm.physmem */ -int vm_nphysseg = 0; /* XXXCDC: uvm.nphysseg */ -#define vm_nphysmem vm_nphysseg - -/* * Some supported CPUs in a given architecture don't support all * of the things necessary to do idle page zero'ing efficiently. * We therefore provide a way to enable it from machdep code here. @@@@ -146,6 +135,18 @@@@ #endif /* DEBUG */ /* + * These functions are reserved for uvm(9) internal use and are not + * exported in the header file uvm_physseg.h + * + * Thus they are redefined here. + */ +void uvm_physseg_init_seg(uvm_physseg_t, struct vm_page *); +void uvm_physseg_seg_chomp_slab(uvm_physseg_t, struct vm_page *, size_t); + +/* returns a pgs array */ +struct vm_page *uvm_physseg_seg_alloc_from_slab(uvm_physseg_t, size_t); + +/* * local prototypes */ @@@@ -337,11 +338,9 @@@@ static struct uvm_cpu boot_cpu; psize_t freepages, pagecount, bucketcount, n; struct pgflbucket *bucketarray, *cpuarray; - struct vm_physseg *seg; struct vm_page *pagearray; + uvm_physseg_t bank; int lcv; - u_int i; - paddr_t paddr; KASSERT(ncpu <= 1); CTASSERT(sizeof(pagearray->offset) >= sizeof(struct uvm_cpu *)); @@@@ -369,7 +368,7 @@@@ * now is to allocate vm_page structures for this memory. */ - if (vm_nphysmem == 0) + if (uvm_physseg_get_last() == UVM_PHYSSEG_TYPE_INVALID) panic("uvm_page_bootstrap: no memory pre-allocated"); /* @@@@ -381,9 +380,11 @@@@ */ freepages = 0; - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) { - seg = VM_PHYSMEM_PTR(lcv); - freepages += (seg->end - seg->start); + + for (bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank) ; + bank = uvm_physseg_get_next(bank)) { + freepages += (uvm_physseg_get_end(bank) - uvm_physseg_get_start(bank)); } /* @@@@ -428,31 +429,20 @@@@ /* * init the vm_page structures and put them in the correct place. */ + /* First init the extent */ - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) { - seg = VM_PHYSMEM_PTR(lcv); - n = seg->end - seg->start; + for (bank = uvm_physseg_get_first(), + uvm_physseg_seg_chomp_slab(bank, pagearray, pagecount); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + + n = uvm_physseg_get_end(bank) - uvm_physseg_get_start(bank); + uvm_physseg_seg_alloc_from_slab(bank, n); + uvm_physseg_init_seg(bank, pagearray); /* set up page array pointers */ - seg->pgs = pagearray; pagearray += n; pagecount -= n; - seg->lastpg = seg->pgs + n; - - /* init and free vm_pages (we've already zeroed them) */ - paddr = ctob(seg->start); - for (i = 0 ; i < n ; i++, paddr += PAGE_SIZE) { - seg->pgs[i].phys_addr = paddr; -#ifdef __HAVE_VM_PAGE_MD - VM_MDPAGE_INIT(&seg->pgs[i]); -#endif - if (atop(paddr) >= seg->avail_start && - atop(paddr) < seg->avail_end) { - uvmexp.npages++; - /* add page to free pool */ - uvm_pagefree(&seg->pgs[i]); - } - } } /* @@@@ -625,92 +615,42 @@@@ static bool uvm_page_physget_freelist(paddr_t *paddrp, int freelist) { - struct vm_physseg *seg; - int lcv, x; + uvm_physseg_t lcv; /* pass 1: try allocating from a matching end */ #if (VM_PHYSSEG_STRAT == VM_PSTRAT_BIGFIRST) - for (lcv = vm_nphysmem - 1 ; lcv >= 0 ; lcv--) + for (lcv = uvm_physseg_get_last() ; uvm_physseg_valid_p(lcv) ; lcv = uvm_physseg_get_prev(lcv)) #else - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) + for (lcv = uvm_physseg_get_first() ; uvm_physseg_valid_p(lcv) ; lcv = uvm_physseg_get_next(lcv)) #endif { - seg = VM_PHYSMEM_PTR(lcv); - if (uvm.page_init_done == true) panic("uvm_page_physget: called _after_ bootstrap"); - if (seg->free_list != freelist) - continue; + /* Try to match at front or back on unused segment */ + if (uvm_page_physunload(lcv, freelist, paddrp) == false) { + if (paddrp == NULL) /* freelist fail, try next */ + continue; + } else + return true; - /* try from front */ - if (seg->avail_start == seg->start && - seg->avail_start < seg->avail_end) { - *paddrp = ctob(seg->avail_start); - seg->avail_start++; - seg->start++; - /* nothing left? nuke it */ - if (seg->avail_start == seg->end) { - if (vm_nphysmem == 1) - panic("uvm_page_physget: out of memory!"); - vm_nphysmem--; - for (x = lcv ; x < vm_nphysmem ; x++) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - return (true); - } - - /* try from rear */ - if (seg->avail_end == seg->end && - seg->avail_start < seg->avail_end) { - *paddrp = ctob(seg->avail_end - 1); - seg->avail_end--; - seg->end--; - /* nothing left? nuke it */ - if (seg->avail_end == seg->start) { - if (vm_nphysmem == 1) - panic("uvm_page_physget: out of memory!"); - vm_nphysmem--; - for (x = lcv ; x < vm_nphysmem ; x++) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - return (true); - } - } /* pass2: forget about matching ends, just allocate something */ #if (VM_PHYSSEG_STRAT == VM_PSTRAT_BIGFIRST) - for (lcv = vm_nphysmem - 1 ; lcv >= 0 ; lcv--) + for (lcv = uvm_physseg_get_last() ; uvm_physseg_valid_p(lcv); lcv = uvm_physseg_get_prev(lcv)) #else - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) + for (lcv = uvm_physseg_get_first() ; uvm_physseg_valid_p(lcv) ; lcv = uvm_physseg_get_next(lcv)) #endif { - seg = VM_PHYSMEM_PTR(lcv); - - /* any room in this bank? */ - if (seg->avail_start >= seg->avail_end) - continue; /* nope */ - - *paddrp = ctob(seg->avail_start); - seg->avail_start++; - /* truncate! */ - seg->start = seg->avail_start; - - /* nothing left? nuke it */ - if (seg->avail_start == seg->end) { - if (vm_nphysmem == 1) - panic("uvm_page_physget: out of memory!"); - vm_nphysmem--; - for (x = lcv ; x < vm_nphysmem ; x++) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - return (true); + /* Try the front regardless. */ + if (uvm_page_physunload_force(lcv, freelist, paddrp) == false) { + if (paddrp == NULL) /* freelist fail, try next */ + continue; + } else + return true; } - - return (false); /* whoops! */ + } + return false; } bool @@@@ -727,230 +667,6 @@@@ #endif /* PMAP_STEAL_MEMORY */ /* - * uvm_page_physload: load physical memory into VM system - * - * => all args are PFs - * => all pages in start/end get vm_page structures - * => areas marked by avail_start/avail_end get added to the free page pool - * => we are limited to VM_PHYSSEG_MAX physical memory segments - */ - -uvm_physseg_t -uvm_page_physload(paddr_t start, paddr_t end, paddr_t avail_start, - paddr_t avail_end, int free_list) -{ - int preload, lcv; - psize_t npages; - struct vm_page *pgs; - struct vm_physseg *ps; - - if (uvmexp.pagesize == 0) - panic("uvm_page_physload: page size not set!"); - if (free_list >= VM_NFREELIST || free_list < VM_FREELIST_DEFAULT) - panic("uvm_page_physload: bad free list %d", free_list); - if (start >= end) - panic("uvm_page_physload: start >= end"); - - /* - * do we have room? - */ - - if (vm_nphysmem == VM_PHYSSEG_MAX) { - printf("uvm_page_physload: unable to load physical memory " - "segment\n"); - printf("\t%d segments allocated, ignoring 0x%llx -> 0x%llx\n", - VM_PHYSSEG_MAX, (long long)start, (long long)end); - printf("\tincrease VM_PHYSSEG_MAX\n"); - return 0; - } - - /* - * check to see if this is a "preload" (i.e. uvm_page_init hasn't been - * called yet, so kmem is not available). - */ - - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) { - if (VM_PHYSMEM_PTR(lcv)->pgs) - break; - } - preload = (lcv == vm_nphysmem); - - /* - * if VM is already running, attempt to kmem_alloc vm_page structures - */ - - if (!preload) { - panic("uvm_page_physload: tried to add RAM after vm_mem_init"); - } else { - pgs = NULL; - npages = 0; - } - - /* - * now insert us in the proper place in vm_physmem[] - */ - -#if (VM_PHYSSEG_STRAT == VM_PSTRAT_RANDOM) - /* random: put it at the end (easy!) */ - ps = VM_PHYSMEM_PTR(vm_nphysmem); -#elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BSEARCH) - { - int x; - /* sort by address for binary search */ - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) - if (start < VM_PHYSMEM_PTR(lcv)->start) - break; - ps = VM_PHYSMEM_PTR(lcv); - /* move back other entries, if necessary ... */ - for (x = vm_nphysmem ; x > lcv ; x--) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x - 1); - } -#elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BIGFIRST) - { - int x; - /* sort by largest segment first */ - for (lcv = 0 ; lcv < vm_nphysmem ; lcv++) - if ((end - start) > - (VM_PHYSMEM_PTR(lcv)->end - VM_PHYSMEM_PTR(lcv)->start)) - break; - ps = VM_PHYSMEM_PTR(lcv); - /* move back other entries, if necessary ... */ - for (x = vm_nphysmem ; x > lcv ; x--) - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x - 1); - } -#else - panic("uvm_page_physload: unknown physseg strategy selected!"); -#endif - - ps->start = start; - ps->end = end; - ps->avail_start = avail_start; - ps->avail_end = avail_end; - if (preload) { - ps->pgs = NULL; - } else { - ps->pgs = pgs; - ps->lastpg = pgs + npages; - } - ps->free_list = free_list; - vm_nphysmem++; - - if (!preload) { - uvmpdpol_reinit(); - } - - return 0; -} - -/* - * when VM_PHYSSEG_MAX is 1, we can simplify these functions - */ - -#if VM_PHYSSEG_MAX == 1 -static inline int vm_physseg_find_contig(struct vm_physseg *, int, paddr_t, int *); -#elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BSEARCH) -static inline int vm_physseg_find_bsearch(struct vm_physseg *, int, paddr_t, int *); -#else -static inline int vm_physseg_find_linear(struct vm_physseg *, int, paddr_t, int *); -#endif - -/* - * vm_physseg_find: find vm_physseg structure that belongs to a PA - */ -int -vm_physseg_find(paddr_t pframe, int *offp) -{ - -#if VM_PHYSSEG_MAX == 1 - return vm_physseg_find_contig(vm_physmem, vm_nphysseg, pframe, offp); -#elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BSEARCH) - return vm_physseg_find_bsearch(vm_physmem, vm_nphysseg, pframe, offp); -#else - return vm_physseg_find_linear(vm_physmem, vm_nphysseg, pframe, offp); -#endif -} - -#if VM_PHYSSEG_MAX == 1 -static inline int -vm_physseg_find_contig(struct vm_physseg *segs, int nsegs, paddr_t pframe, int *offp) -{ - - /* 'contig' case */ - if (pframe >= segs[0].start && pframe < segs[0].end) { - if (offp) - *offp = pframe - segs[0].start; - return(0); - } - return(-1); -} - -#elif (VM_PHYSSEG_STRAT == VM_PSTRAT_BSEARCH) - -static inline int -vm_physseg_find_bsearch(struct vm_physseg *segs, int nsegs, paddr_t pframe, int *offp) -{ - /* binary search for it */ - u_int start, len, guess; - - /* - * if try is too large (thus target is less than try) we reduce - * the length to trunc(len/2) [i.e. everything smaller than "try"] - * - * if the try is too small (thus target is greater than try) then - * we set the new start to be (try + 1). this means we need to - * reduce the length to (round(len/2) - 1). - * - * note "adjust" below which takes advantage of the fact that - * (round(len/2) - 1) == trunc((len - 1) / 2) - * for any value of len we may have - */ - - for (start = 0, len = nsegs ; len != 0 ; len = len / 2) { - guess = start + (len / 2); /* try in the middle */ - - /* start past our try? */ - if (pframe >= segs[guess].start) { - /* was try correct? */ - if (pframe < segs[guess].end) { - if (offp) - *offp = pframe - segs[guess].start; - return guess; /* got it */ - } - start = guess + 1; /* next time, start here */ - len--; /* "adjust" */ - } else { - /* - * pframe before try, just reduce length of - * region, done in "for" loop - */ - } - } - return(-1); -} - -#else - -static inline int -vm_physseg_find_linear(struct vm_physseg *segs, int nsegs, paddr_t pframe, int *offp) -{ - /* linear search for it */ - int lcv; - - for (lcv = 0; lcv < nsegs; lcv++) { - if (pframe >= segs[lcv].start && - pframe < segs[lcv].end) { - if (offp) - *offp = pframe - segs[lcv].start; - return(lcv); /* got it */ - } - } - return(-1); -} -#endif - -/* * PHYS_TO_VM_PAGE: find vm_page for a PA. used by MI code to get vm_pages * back from an I/O mapping (ugh!). used in some MD code as well. */ @@@@ -958,12 +674,12 @@@@ uvm_phys_to_vm_page(paddr_t pa) { paddr_t pf = atop(pa); - int off; - int psi; + paddr_t off; + uvm_physseg_t upm; - psi = vm_physseg_find(pf, &off); - if (psi != -1) - return(&VM_PHYSMEM_PTR(psi)->pgs[off]); + upm = uvm_physseg_find(pf, &off); + if (upm != UVM_PHYSSEG_TYPE_INVALID) + return uvm_physseg_get_pg(upm, off); return(NULL); } @@@@ -987,7 +703,8 @@@@ struct vm_page *pg; vsize_t bucketcount; size_t bucketmemsize, oldbucketmemsize; - int lcv, color, i, ocolors; + int color, i, ocolors; + int lcv; struct uvm_cpu *ucpu; KASSERT(((newncolors - 1) & newncolors) == 0); @@@@ -1221,7 +938,8 @@@@ uvm_pagealloc_strat(struct uvm_object *obj, voff_t off, struct vm_anon *anon, int flags, int strat, int free_list) { - int lcv, try1, try2, zeroit = 0, color; + int try1, try2, zeroit = 0, color; + int lcv; struct uvm_cpu *ucpu; struct vm_page *pg; lwp_t *l; @@@@ -2007,7 +1725,7 @@@@ uvm_pageismanaged(paddr_t pa) { - return (vm_physseg_find(atop(pa), NULL) != -1); + return (uvm_physseg_find(atop(pa), NULL) != UVM_PHYSSEG_TYPE_INVALID); } /* @@@@ -2017,11 +1735,11 @@@@ int uvm_page_lookup_freelist(struct vm_page *pg) { - int lcv; + uvm_physseg_t upm; - lcv = vm_physseg_find(atop(VM_PAGE_TO_PHYS(pg)), NULL); - KASSERT(lcv != -1); - return (VM_PHYSMEM_PTR(lcv)->free_list); + upm = uvm_physseg_find(atop(VM_PAGE_TO_PHYS(pg)), NULL); + KASSERT(upm != UVM_PHYSSEG_TYPE_INVALID); + return uvm_physseg_get_free_list(upm); } /* @@@@ -2137,7 +1855,8 @@@@ void uvm_page_printall(void (*pr)(const char *, ...)) { - unsigned i; + uvm_physseg_t i; + paddr_t pfn; struct vm_page *pg; (*pr)("%18s %4s %4s %18s %18s" @@@@ -2145,8 +1864,14 @@@@ " OWNER" #endif "\n", "PAGE", "FLAG", "PQ", "UOBJECT", "UANON"); - for (i = 0; i < vm_nphysmem; i++) { - for (pg = VM_PHYSMEM_PTR(i)->pgs; pg < VM_PHYSMEM_PTR(i)->lastpg; pg++) { + for (i = uvm_physseg_get_first(); + uvm_physseg_valid_p(i); + i = uvm_physseg_get_next(i)) { + for (pfn = uvm_physseg_get_start(i); + pfn <= uvm_physseg_get_end(i); + pfn++) { + pg = PHYS_TO_VM_PAGE(ptoa(pfn)); + (*pr)("%18p %04x %04x %18p %18p", pg, pg->flags, pg->pqflags, pg->uobject, pg->uanon); Index: uvm/uvm_page.h =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_page.h,v retrieving revision 1.80 diff -u -r1.80 uvm_page.h --- uvm/uvm_page.h 23 Mar 2015 07:59:12 -0000 1.80 +++ uvm/uvm_page.h 22 Dec 2016 16:13:39 -0000 @@@@ -294,24 +294,6 @@@@ #define VM_PSTRAT_BSEARCH 2 #define VM_PSTRAT_BIGFIRST 3 -/* - * vm_physseg: describes one segment of physical memory - */ -struct vm_physseg { - paddr_t start; /* PF# of first page in segment */ - paddr_t end; /* (PF# of last page in segment) + 1 */ - paddr_t avail_start; /* PF# of first free page in segment */ - paddr_t avail_end; /* (PF# of last free page in segment) +1 */ - struct vm_page *pgs; /* vm_page structures (from start) */ - struct vm_page *lastpg; /* vm_page structure for end */ - int free_list; /* which free list they belong on */ - u_int start_hint; /* start looking for free pages here */ - /* protected by uvm_fpageqlock */ -#ifdef __HAVE_PMAP_PHYSSEG - struct pmap_physseg pmseg; /* pmap specific (MD) data */ -#endif -}; - #ifdef _KERNEL /* @@@@ -321,21 +303,6 @@@@ extern bool vm_page_zero_enable; /* - * physical memory config is stored in vm_physmem. - */ - -#define VM_PHYSMEM_PTR(i) (&vm_physmem[i]) -#if VM_PHYSSEG_MAX == 1 -#define VM_PHYSMEM_PTR_SWAP(i, j) /* impossible */ -#else -#define VM_PHYSMEM_PTR_SWAP(i, j) \ - do { vm_physmem[(i)] = vm_physmem[(j)]; } while (0) -#endif - -extern struct vm_physseg vm_physmem[VM_PHYSSEG_MAX]; -extern int vm_nphysseg; - -/* * prototypes: the following prototypes define the interface to pages */ @@@@ -366,10 +333,13 @@@@ int uvm_page_lookup_freelist(struct vm_page *); -int vm_physseg_find(paddr_t, int *); struct vm_page *uvm_phys_to_vm_page(paddr_t); paddr_t uvm_vm_page_to_phys(const struct vm_page *); +#if !defined(PMAP_STEAL_MEMORY) +bool uvm_page_physget(paddr_t *); +#endif + /* * macros */ Index: uvm/uvm_pglist.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_pglist.c,v retrieving revision 1.67 diff -u -r1.67 uvm_pglist.c --- uvm/uvm_pglist.c 26 Oct 2014 01:42:07 -0000 1.67 +++ uvm/uvm_pglist.c 22 Dec 2016 16:13:39 -0000 @@@@ -116,16 +116,15 @@@@ } static int -uvm_pglistalloc_c_ps(struct vm_physseg *ps, int num, paddr_t low, paddr_t high, +uvm_pglistalloc_c_ps(uvm_physseg_t psi, int num, paddr_t low, paddr_t high, paddr_t alignment, paddr_t boundary, struct pglist *rlist) { signed int candidate, limit, candidateidx, end, idx, skip; - struct vm_page *pgs; int pagemask; bool second_pass; #ifdef DEBUG paddr_t idxpa, lastidxpa; - int cidx = 0; /* XXX: GCC */ + paddr_t cidx = 0; /* XXX: GCC */ #endif #ifdef PGALLOC_VERBOSE printf("pgalloc: contig %d pgs from psi %zd\n", num, ps - vm_physmem); @@@@ -140,26 +139,26 @@@@ /* * Make sure that physseg falls within with range to be allocated from. */ - if (high <= ps->avail_start || low >= ps->avail_end) + if (high <= uvm_physseg_get_avail_start(psi) || low >= uvm_physseg_get_avail_end(psi)) return 0; /* * We start our search at the just after where the last allocation * succeeded. */ - candidate = roundup2(max(low, ps->avail_start + ps->start_hint), alignment); - limit = min(high, ps->avail_end); + candidate = roundup2(max(low, uvm_physseg_get_avail_start(psi) + + uvm_physseg_get_start_hint(psi)), alignment); + limit = min(high, uvm_physseg_get_avail_end(psi)); pagemask = ~((boundary >> PAGE_SHIFT) - 1); skip = 0; second_pass = false; - pgs = ps->pgs; for (;;) { bool ok = true; signed int cnt; if (candidate + num > limit) { - if (ps->start_hint == 0 || second_pass) { + if (uvm_physseg_get_start_hint(psi) == 0 || second_pass) { /* * We've run past the allowable range. */ @@@@ -171,8 +170,9 @@@@ * is were we started. */ second_pass = true; - candidate = roundup2(max(low, ps->avail_start), alignment); - limit = min(limit, ps->avail_start + ps->start_hint); + candidate = roundup2(max(low, uvm_physseg_get_avail_start(psi)), alignment); + limit = min(limit, uvm_physseg_get_avail_start(psi) + + uvm_physseg_get_start_hint(psi)); skip = 0; continue; } @@@@ -192,16 +192,16 @@@@ * Make sure this is a managed physical page. */ - if (vm_physseg_find(candidate, &cidx) != ps - vm_physmem) + if (uvm_physseg_find(candidate, &cidx) != psi) panic("pgalloc contig: botch1"); - if (cidx != candidate - ps->start) + if (cidx != candidate - uvm_physseg_get_start(psi)) panic("pgalloc contig: botch2"); - if (vm_physseg_find(candidate + num - 1, &cidx) != ps - vm_physmem) + if (uvm_physseg_find(candidate + num - 1, &cidx) != psi) panic("pgalloc contig: botch3"); - if (cidx != candidate - ps->start + num - 1) + if (cidx != candidate - uvm_physseg_get_start(psi) + num - 1) panic("pgalloc contig: botch4"); #endif - candidateidx = candidate - ps->start; + candidateidx = candidate - uvm_physseg_get_start(psi); end = candidateidx + num; /* @@@@ -220,15 +220,15 @@@@ * testing most of those pages again in the next pass. */ for (idx = end - 1; idx >= candidateidx + skip; idx--) { - if (VM_PAGE_IS_FREE(&pgs[idx]) == 0) { + if (VM_PAGE_IS_FREE(uvm_physseg_get_pg(psi, idx)) == 0) { ok = false; break; } #ifdef DEBUG if (idx > candidateidx) { - idxpa = VM_PAGE_TO_PHYS(&pgs[idx]); - lastidxpa = VM_PAGE_TO_PHYS(&pgs[idx - 1]); + idxpa = VM_PAGE_TO_PHYS(uvm_physseg_get_pg(psi, idx)); + lastidxpa = VM_PAGE_TO_PHYS(uvm_physseg_get_pg(psi, idx - 1)); if ((lastidxpa + PAGE_SIZE) != idxpa) { /* * Region not contiguous. @@@@ -249,7 +249,7 @@@@ if (ok) { while (skip-- > 0) { - KDASSERT(VM_PAGE_IS_FREE(&pgs[candidateidx + skip])); + KDASSERT(VM_PAGE_IS_FREE(uvm_physseg_get_pg(psi, candidateidx + skip))); } #ifdef PGALLOC_VERBOSE printf(": ok\n"); @@@@ -280,19 +280,22 @@@@ /* * we have a chunk of memory that conforms to the requested constraints. */ - for (idx = candidateidx, pgs += idx; idx < end; idx++, pgs++) - uvm_pglist_add(pgs, rlist); + for (idx = candidateidx; idx < end; idx++) + uvm_pglist_add(uvm_physseg_get_pg(psi, idx), rlist); /* * the next time we need to search this segment, start after this * chunk of pages we just allocated. */ - ps->start_hint = candidate + num - ps->avail_start; - KASSERTMSG(ps->start_hint <= ps->avail_end - ps->avail_start, + uvm_physseg_set_start_hint(psi, candidate + num - + uvm_physseg_get_avail_start(psi)); + KASSERTMSG(uvm_physseg_get_start_hint(psi) <= + uvm_physseg_get_avail_end(psi) - uvm_physseg_get_avail_start(psi), "%x %u (%#x) <= %#"PRIxPADDR" - %#"PRIxPADDR" (%#"PRIxPADDR")", candidate + num, - ps->start_hint, ps->start_hint, ps->avail_end, ps->avail_start, - ps->avail_end - ps->avail_start); + uvm_physseg_get_start_hint(psi), uvm_physseg_get_start_hint(psi), + uvm_physseg_get_avail_end(psi), uvm_physseg_get_avail_start(psi), + uvm_physseg_get_avail_end(psi) - uvm_physseg_get_avail_start(psi)); #ifdef PGALLOC_VERBOSE printf("got %d pgs\n", num); @@@@ -304,10 +307,10 @@@@ uvm_pglistalloc_contig(int num, paddr_t low, paddr_t high, paddr_t alignment, paddr_t boundary, struct pglist *rlist) { - int fl, psi; - struct vm_physseg *ps; + int fl; int error; + uvm_physseg_t psi; /* Default to "lose". */ error = ENOMEM; @@@@ -322,17 +325,16 @@@@ for (fl = 0; fl < VM_NFREELIST; fl++) { #if (VM_PHYSSEG_STRAT == VM_PSTRAT_BIGFIRST) - for (psi = vm_nphysseg - 1 ; psi >= 0 ; psi--) + for (psi = uvm_physseg_get_last(); uvm_physseg_valid_p(psi); psi = uvm_physseg_get_prev(psi)) + #else - for (psi = 0 ; psi < vm_nphysseg ; psi++) + for (psi = uvm_physseg_get_first(); uvm_physseg_valid_p(psi); psi = uvm_physseg_get_next(psi)) #endif { - ps = &vm_physmem[psi]; - - if (ps->free_list != fl) + if (uvm_physseg_get_free_list(psi) != fl) continue; - num -= uvm_pglistalloc_c_ps(ps, num, low, high, + num -= uvm_pglistalloc_c_ps(psi, num, low, high, alignment, boundary, rlist); if (num == 0) { #ifdef PGALLOC_VERBOSE @@@@ -358,59 +360,62 @@@@ } static int -uvm_pglistalloc_s_ps(struct vm_physseg *ps, int num, paddr_t low, paddr_t high, +uvm_pglistalloc_s_ps(uvm_physseg_t psi, int num, paddr_t low, paddr_t high, struct pglist *rlist) { int todo, limit, candidate; struct vm_page *pg; bool second_pass; #ifdef PGALLOC_VERBOSE - printf("pgalloc: simple %d pgs from psi %zd\n", num, ps - vm_physmem); + printf("pgalloc: simple %d pgs from psi %zd\n", num, psi); #endif KASSERT(mutex_owned(&uvm_fpageqlock)); - KASSERT(ps->start <= ps->avail_start); - KASSERT(ps->start <= ps->avail_end); - KASSERT(ps->avail_start <= ps->end); - KASSERT(ps->avail_end <= ps->end); + KASSERT(uvm_physseg_get_start(psi) <= uvm_physseg_get_avail_start(psi)); + KASSERT(uvm_physseg_get_start(psi) <= uvm_physseg_get_avail_end(psi)); + KASSERT(uvm_physseg_get_avail_start(psi) <= uvm_physseg_get_end(psi)); + KASSERT(uvm_physseg_get_avail_end(psi) <= uvm_physseg_get_end(psi)); low = atop(low); high = atop(high); todo = num; - candidate = max(low, ps->avail_start + ps->start_hint); - limit = min(high, ps->avail_end); - pg = &ps->pgs[candidate - ps->start]; + candidate = max(low, uvm_physseg_get_avail_start(psi) + + uvm_physseg_get_start_hint(psi)); + limit = min(high, uvm_physseg_get_avail_end(psi)); + pg = uvm_physseg_get_pg(psi, candidate - uvm_physseg_get_start(psi)); second_pass = false; /* * Make sure that physseg falls within with range to be allocated from. */ - if (high <= ps->avail_start || low >= ps->avail_end) + if (high <= uvm_physseg_get_avail_start(psi) || + low >= uvm_physseg_get_avail_end(psi)) return 0; again: for (;; candidate++, pg++) { if (candidate >= limit) { - if (ps->start_hint == 0 || second_pass) { + if (uvm_physseg_get_start_hint(psi) == 0 || second_pass) { candidate = limit - 1; break; } second_pass = true; - candidate = max(low, ps->avail_start); - limit = min(limit, ps->avail_start + ps->start_hint); - pg = &ps->pgs[candidate - ps->start]; + candidate = max(low, uvm_physseg_get_avail_start(psi)); + limit = min(limit, uvm_physseg_get_avail_start(psi) + + uvm_physseg_get_start_hint(psi)); + pg = uvm_physseg_get_pg(psi, candidate - uvm_physseg_get_start(psi)); goto again; } #if defined(DEBUG) { - int cidx = 0; - const int bank = vm_physseg_find(candidate, &cidx); - KDASSERTMSG(bank == ps - vm_physmem, - "vm_physseg_find(%#x) (%d) != ps %zd", - candidate, bank, ps - vm_physmem); - KDASSERTMSG(cidx == candidate - ps->start, - "vm_physseg_find(%#x): %#x != off %"PRIxPADDR, - candidate, cidx, candidate - ps->start); + paddr_t cidx = 0; + const uvm_physseg_t bank = uvm_physseg_find(candidate, &cidx); + KDASSERTMSG(bank == psi, + "uvm_physseg_find(%#x) (%"PRIxPHYSMEM ") != psi %"PRIxPHYSMEM, + candidate, bank, psi); + KDASSERTMSG(cidx == candidate - uvm_physseg_get_start(psi), + "uvm_physseg_find(%#x): %#"PRIxPADDR" != off %"PRIxPADDR, + candidate, cidx, candidate - uvm_physseg_get_start(psi)); } #endif if (VM_PAGE_IS_FREE(pg) == 0) @@@@ -426,12 +431,16 @@@@ * The next time we need to search this segment, * start just after the pages we just allocated. */ - ps->start_hint = candidate + 1 - ps->avail_start; - KASSERTMSG(ps->start_hint <= ps->avail_end - ps->avail_start, + uvm_physseg_set_start_hint(psi, candidate + 1 - uvm_physseg_get_avail_start(psi)); + KASSERTMSG(uvm_physseg_get_start_hint(psi) <= uvm_physseg_get_avail_end(psi) - + uvm_physseg_get_avail_start(psi), "%#x %u (%#x) <= %#"PRIxPADDR" - %#"PRIxPADDR" (%#"PRIxPADDR")", candidate + 1, - ps->start_hint, ps->start_hint, ps->avail_end, ps->avail_start, - ps->avail_end - ps->avail_start); + uvm_physseg_get_start_hint(psi), + uvm_physseg_get_start_hint(psi), + uvm_physseg_get_avail_end(psi), + uvm_physseg_get_avail_start(psi), + uvm_physseg_get_avail_end(psi) - uvm_physseg_get_avail_start(psi)); #ifdef PGALLOC_VERBOSE printf("got %d pgs\n", num - todo); @@@@ -443,9 +452,10 @@@@ uvm_pglistalloc_simple(int num, paddr_t low, paddr_t high, struct pglist *rlist, int waitok) { - int fl, psi, error; - struct vm_physseg *ps; + int fl, error; + uvm_physseg_t psi; + /* Default to "lose". */ error = ENOMEM; @@@@ -461,17 +471,16 @@@@ for (fl = 0; fl < VM_NFREELIST; fl++) { #if (VM_PHYSSEG_STRAT == VM_PSTRAT_BIGFIRST) - for (psi = vm_nphysseg - 1 ; psi >= 0 ; psi--) + for (psi = uvm_physseg_get_last(); uvm_physseg_valid_p(psi); psi = uvm_physseg_get_prev(psi)) + #else - for (psi = 0 ; psi < vm_nphysseg ; psi++) + for (psi = uvm_physseg_get_first(); uvm_physseg_valid_p(psi); psi = uvm_physseg_get_next(psi)) #endif { - ps = &vm_physmem[psi]; - - if (ps->free_list != fl) + if (uvm_physseg_get_free_list(psi) != fl) continue; - num -= uvm_pglistalloc_s_ps(ps, num, low, high, rlist); + num -= uvm_pglistalloc_s_ps(psi, num, low, high, rlist); if (num == 0) { error = 0; goto out; Index: uvm/uvm_physseg.h =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_physseg.h,v retrieving revision 1.3 diff -u -r1.3 uvm_physseg.h --- uvm/uvm_physseg.h 22 Dec 2016 15:54:35 -0000 1.3 +++ uvm/uvm_physseg.h 22 Dec 2016 16:13:39 -0000 @@@@ -1,4 +1,4 @@@@ -/* $NetBSD: uvm_physseg.h,v 1.3 2016/12/22 15:54:35 cherry Exp $ */ +/* $NetBSD: uvm_physseg.h,v 1.2 2016/12/22 08:15:20 cherry Exp $ */ /* * Consolidated API from uvm_page.c and others. @@@@ -9,10 +9,8 @@@@ #define _UVM_UVM_PHYSSEG_H_ #if defined(_KERNEL_OPT) -#if notyet #include "opt_uvm_hotplug.h" #endif -#endif #include #include Index: uvm/pmap/pmap.c =================================================================== RCS file: /cvsroot/src/sys/uvm/pmap/pmap.c,v retrieving revision 1.25 diff -u -r1.25 pmap.c --- uvm/pmap/pmap.c 1 Dec 2016 02:15:08 -0000 1.25 +++ uvm/pmap/pmap.c 22 Dec 2016 16:13:39 -0000 @@@@ -112,6 +112,7 @@@@ #include #include +#include #if defined(MULTIPROCESSOR) && defined(PMAP_VIRTUAL_CACHE_ALIASES) \ && !defined(PMAP_NO_PV_UNCACHED) @@@@ -452,37 +453,39 @@@@ size_t npgs; paddr_t pa; vaddr_t va; - struct vm_physseg *maybe_seg = NULL; - u_int maybe_bank = vm_nphysseg; + + uvm_physseg_t maybe_bank = UVM_PHYSMEM_TYPE_INVALID; size = round_page(size); npgs = atop(size); aprint_debug("%s: need %zu pages\n", __func__, npgs); - for (u_int bank = 0; bank < vm_nphysseg; bank++) { - struct vm_physseg * const seg = VM_PHYSMEM_PTR(bank); + for (uvm_physseg_t bank = uvm_physseg_get_first(); + uvm_physseg_valid_p(bank); + bank = uvm_physseg_get_next(bank)) { + if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); - aprint_debug("%s: seg %u: %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n", + aprint_debug("%s: seg %"PRIxPHYSMEM": %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n", __func__, bank, - seg->avail_start, seg->start, - seg->avail_end, seg->end); + uvm_physseg_get_avail_start(bank), uvm_physseg_get_start(bank), + uvm_physseg_get_avail_end(bank), uvm_physseg_get_end(bank)); - if (seg->avail_start != seg->start - || seg->avail_start >= seg->avail_end) { - aprint_debug("%s: seg %u: bad start\n", __func__, bank); + if (uvm_physseg_get_avail_start(bank) != uvm_physseg_get_start(bank) + || uvm_physseg_get_avail_start(bank) >= uvm_physseg_get_avail_end(bank)) { + aprint_debug("%s: seg %"PRIxPHYSMEM": bad start\n", __func__, bank); continue; } - if (seg->avail_end - seg->avail_start < npgs) { - aprint_debug("%s: seg %u: too small for %zu pages\n", + if (uvm_physseg_get_avail_end(bank) - uvm_physseg_get_avail_start(bank) < npgs) { + aprint_debug("%s: seg %"PRIxPHYSMEM": too small for %zu pages\n", __func__, bank, npgs); continue; } - if (!pmap_md_ok_to_steal_p(seg, npgs)) { + if (!pmap_md_ok_to_steal_p(bank, npgs)) { continue; } @@@@ -490,44 +493,24 @@@@ * Always try to allocate from the segment with the least * amount of space left. */ -#define VM_PHYSMEM_SPACE(s) ((s)->avail_end - (s)->avail_start) - if (maybe_seg == NULL - || VM_PHYSMEM_SPACE(seg) < VM_PHYSMEM_SPACE(maybe_seg)) { - maybe_seg = seg; +#define VM_PHYSMEM_SPACE(b) ((uvm_physseg_get_avail_end(b)) - (uvm_physseg_get_avail_start(b))) + if (uvm_physseg_valid_p(maybe_bank) == false + || VM_PHYSMEM_SPACE(bank) < VM_PHYSMEM_SPACE(maybe_bank)) { maybe_bank = bank; } } - if (maybe_seg) { - struct vm_physseg * const seg = maybe_seg; - u_int bank = maybe_bank; - + if (uvm_physseg_valid_p(maybe_bank)) { + const uvm_physseg_t bank = maybe_bank; + /* * There are enough pages here; steal them! */ - pa = ptoa(seg->avail_start); - seg->avail_start += npgs; - seg->start += npgs; - - /* - * Have we used up this segment? - */ - if (seg->avail_start == seg->end) { - if (vm_nphysseg == 1) - panic("pmap_steal_memory: out of memory!"); + pa = ptoa(uvm_physseg_get_start(bank)); + uvm_physseg_unplug(atop(pa), npgs); - aprint_debug("%s: seg %u: %zu pages stolen (removed)\n", - __func__, bank, npgs); - /* Remove this segment from the list. */ - vm_nphysseg--; - for (u_int x = bank; x < vm_nphysseg; x++) { - /* structure copy */ - VM_PHYSMEM_PTR_SWAP(x, x + 1); - } - } else { - aprint_debug("%s: seg %u: %zu pages stolen (%#"PRIxPADDR" left)\n", - __func__, bank, npgs, VM_PHYSMEM_SPACE(seg)); - } + aprint_debug("%s: seg %"PRIxPHYSMEM": %zu pages stolen (%#"PRIxPADDR" left)\n", + __func__, bank, npgs, VM_PHYSMEM_SPACE(bank)); va = pmap_md_map_poolpage(pa, size); memset((void *)va, 0, size); @ 1.3 log @remove spurious newlines remove spurious uvm_physseg_init() et. al. remove conf/ for only i386 and amd64 @ text @d1 1 a1 19 Index: share/man/man9/Makefile =================================================================== RCS file: /cvsroot/src/share/man/man9/Makefile,v retrieving revision 1.398 diff -u -r1.398 Makefile --- share/man/man9/Makefile 28 Nov 2016 11:00:24 -0000 1.398 +++ share/man/man9/Makefile 22 Dec 2016 10:32:25 -0000 @@@@ -59,8 +59,8 @@@@ vattr.9 veriexec.9 vcons.9 vfs.9 vfs_hooks.9 vfsops.9 vfssubr.9 \ video.9 vme.9 \ vnfileops.9 vnode.9 vnodeops.9 vnsubr.9 \ - ubc.9 usbd_status.9 usbdi.9 uvm.9 uvm_km.9 uvm_map.9 vmem.9 \ - wapbl.9 wdc.9 workqueue.9 \ + ubc.9 usbd_status.9 usbdi.9 uvm.9 uvm_hotplug.9 uvm_km.9 uvm_map.9 \ + vmem.9 wapbl.9 wdc.9 workqueue.9 \ wscons.9 wsdisplay.9 wsfont.9 wskbd.9 wsmouse.9 \ xcall.9 Index: sys/arch/acorn26/acorn26/pmap.c d6 2 a7 2 --- sys/arch/acorn26/acorn26/pmap.c 11 May 2012 15:39:17 -0000 1.36 +++ sys/arch/acorn26/acorn26/pmap.c 22 Dec 2016 10:32:27 -0000 d40 1 a40 67 Index: sys/arch/acorn26/acorn26/start.c =================================================================== RCS file: /cvsroot/src/sys/arch/acorn26/acorn26/start.c,v retrieving revision 1.20 diff -u -r1.20 start.c --- sys/arch/acorn26/acorn26/start.c 18 Aug 2013 16:08:42 -0000 1.20 +++ sys/arch/acorn26/acorn26/start.c 22 Dec 2016 10:32:27 -0000 @@@@ -125,7 +125,7 @@@@ boothowto = bootconfig.boothowto; physmem = bootconfig.npages; uvmexp.pagesize = bootconfig.nbpp; - uvm_setpagesize(); + uvm_md_init(); /* Any others? */ Index: sys/arch/acorn32/acorn32/rpc_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/acorn32/acorn32/rpc_machdep.c,v retrieving revision 1.90 diff -u -r1.90 rpc_machdep.c --- sys/arch/acorn32/acorn32/rpc_machdep.c 25 Oct 2014 10:58:12 -0000 1.90 +++ sys/arch/acorn32/acorn32/rpc_machdep.c 22 Dec 2016 10:32:28 -0000 @@@@ -924,7 +924,8 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); + for (loop = 0; loop < bootconfig.dramblocks; loop++) { paddr_t start = (paddr_t)bootconfig.dram[loop].address; paddr_t end = start + (bootconfig.dram[loop].pages * PAGE_SIZE); Index: sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c,v retrieving revision 1.28 diff -u -r1.28 eb7500atx_machdep.c --- sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c 25 Oct 2014 10:58:12 -0000 1.28 +++ sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c 22 Dec 2016 10:32:28 -0000 @@@@ -862,7 +862,8 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); + for (loop = 0; loop < bootconfig.dramblocks; loop++) { paddr_t start = (paddr_t)bootconfig.dram[loop].address; paddr_t end = start + (bootconfig.dram[loop].pages * PAGE_SIZE); Index: sys/arch/algor/algor/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/algor/algor/machdep.c,v retrieving revision 1.54 diff -u -r1.54 machdep.c --- sys/arch/algor/algor/machdep.c 30 Jun 2015 02:39:03 -0000 1.54 +++ sys/arch/algor/algor/machdep.c 22 Dec 2016 10:32:30 -0000 @@@@ -198,7 +198,7 @@@@ * Initialize PAGE_SIZE-dependent variables. */ led_display('p', 'g', 's', 'z'); - uvm_setpagesize(); + uvm_md_init(); /* * Initialize bus space tags and bring up the console. Index: sys/arch/alpha/alpha/machdep.c d43 4 a46 4 retrieving revision 1.347 diff -u -r1.347 machdep.c --- sys/arch/alpha/alpha/machdep.c 13 Oct 2016 16:18:20 -0000 1.347 +++ sys/arch/alpha/alpha/machdep.c 22 Dec 2016 10:32:30 -0000 a54 11 @@@@ -372,8 +371,8 @@@@ panic("page size %lu != %d?!", hwrpb->rpb_page_size, ALPHA_PGBYTES); uvmexp.pagesize = hwrpb->rpb_page_size; - uvm_setpagesize(); - + uvm_md_init(); + /* * Find out what hardware we're on, and do basic initialization. */ d79 3 a85 3 + uvm_physseg_unplug(end, atop(sz)); + msgbufaddr = (void *) ALPHA_PHYS_TO_K0SEG(ptoa(end)); + d90 1 a90 1 Index: sys/arch/alpha/alpha/pmap.c d95 2 a96 2 --- sys/arch/alpha/alpha/pmap.c 5 Nov 2015 06:26:15 -0000 1.260 +++ sys/arch/alpha/alpha/pmap.c 22 Dec 2016 10:32:30 -0000 d185 1 a185 1 Index: sys/arch/amd64/amd64/machdep.c d188 4 a191 4 retrieving revision 1.240 diff -u -r1.240 machdep.c --- sys/arch/amd64/amd64/machdep.c 20 Dec 2016 14:03:15 -0000 1.240 +++ sys/arch/amd64/amd64/machdep.c 22 Dec 2016 10:32:33 -0000 d306 1 a306 90 @@@@ -1578,11 +1567,7 @@@@ consinit(); /* XXX SHOULD NOT BE DONE HERE */ - /* - * Initialize PAGE_SIZE-dependent variables. - */ - uvm_setpagesize(); - + uvm_md_init(); uvmexp.ncolors = 2; avail_start = first_avail; Index: sys/arch/amiga/amiga/pmap_bootstrap.c =================================================================== RCS file: /cvsroot/src/sys/arch/amiga/amiga/pmap_bootstrap.c,v retrieving revision 1.9 diff -u -r1.9 pmap_bootstrap.c --- sys/arch/amiga/amiga/pmap_bootstrap.c 6 Dec 2009 06:41:29 -0000 1.9 +++ sys/arch/amiga/amiga/pmap_bootstrap.c 22 Dec 2016 10:32:35 -0000 @@@@ -125,8 +125,8 @@@@ */ uvmexp.pagesize = NBPG; - uvm_setpagesize(); - + uvm_md_init(); + /* * May want to check if first segment is Zorro-II? */ Index: sys/arch/amigappc/amigappc/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/amigappc/amigappc/machdep.c,v retrieving revision 1.51 diff -u -r1.51 machdep.c --- sys/arch/amigappc/amigappc/machdep.c 15 Feb 2012 12:11:42 -0000 1.51 +++ sys/arch/amigappc/amigappc/machdep.c 22 Dec 2016 10:32:40 -0000 @@@@ -560,10 +560,7 @@@@ /* XXX bus_space_init() not needed here */ - /* - * Set the page size - */ - uvm_setpagesize(); + uvm_md_init(); /* * Initialize pmap module Index: sys/arch/arc/arc/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/arc/arc/machdep.c,v retrieving revision 1.129 diff -u -r1.129 machdep.c --- sys/arch/arc/arc/machdep.c 30 Jun 2015 02:39:03 -0000 1.129 +++ sys/arch/arc/arc/machdep.c 22 Dec 2016 10:32:41 -0000 @@@@ -306,11 +306,8 @@@@ } } - /* - * Set the VM page size. - */ - uvm_setpagesize(); - + uvm_md_init(); + /* make sure that we don't call BIOS console from now on */ cn_tab = NULL; Index: sys/arch/arm/arm32/arm32_boot.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm32/arm32_boot.c,v retrieving revision 1.17 diff -u -r1.17 arm32_boot.c --- sys/arch/arm/arm32/arm32_boot.c 8 Mar 2016 08:01:23 -0000 1.17 +++ sys/arch/arm/arm32/arm32_boot.c 22 Dec 2016 10:32:44 -0000 @@@@ -231,8 +231,8 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ - + uvm_md_init(); + #ifdef VERBOSE_INIT_ARM printf("pmap_physload "); #endif Index: sys/arch/arm/arm32/bus_dma.c d311 2 a312 2 --- sys/arch/arm/arm32/bus_dma.c 5 Nov 2016 14:26:23 -0000 1.96 +++ sys/arch/arm/arm32/bus_dma.c 22 Dec 2016 10:32:45 -0000 d328 1 a328 1 Index: sys/arch/arm/arm32/pmap.c d333 2 a334 2 --- sys/arch/arm/arm32/pmap.c 17 Dec 2016 14:36:29 -0000 1.341 +++ sys/arch/arm/arm32/pmap.c 22 Dec 2016 10:32:45 -0000 d346 1 a346 777 Index: sys/arch/arm/at91/at91bus.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/at91/at91bus.c,v retrieving revision 1.18 diff -u -r1.18 at91bus.c --- sys/arch/arm/at91/at91bus.c 13 Sep 2014 18:08:38 -0000 1.18 +++ sys/arch/arm/at91/at91bus.c 22 Dec 2016 10:32:45 -0000 @@@@ -511,7 +511,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/atari/atari/pmap_bootstrap.c =================================================================== RCS file: /cvsroot/src/sys/arch/atari/atari/pmap_bootstrap.c,v retrieving revision 1.7 diff -u -r1.7 pmap_bootstrap.c --- sys/arch/atari/atari/pmap_bootstrap.c 13 Apr 2010 09:49:54 -0000 1.7 +++ sys/arch/atari/atari/pmap_bootstrap.c 22 Dec 2016 10:32:59 -0000 @@@@ -108,8 +108,8 @@@@ * Announce page-size to the VM-system */ uvmexp.pagesize = NBPG; - uvm_setpagesize(); - + uvm_md_init(); + /* * Setup physical address ranges */ Index: sys/arch/cesfic/cesfic/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/cesfic/cesfic/machdep.c,v retrieving revision 1.66 diff -u -r1.66 machdep.c --- sys/arch/cesfic/cesfic/machdep.c 5 Nov 2015 03:48:51 -0000 1.66 +++ sys/arch/cesfic/cesfic/machdep.c 22 Dec 2016 10:33:03 -0000 @@@@ -111,7 +111,7 @@@@ * Declare these as initialized data so we can patch them. */ /*int maxmem;*/ /* max memory per process */ -extern int physmem; /* max supported memory, changes to actual */ +extern psize_t physmem; /* max supported memory, changes to actual */ extern u_int lowram; Index: sys/arch/cobalt/cobalt/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/cobalt/cobalt/machdep.c,v retrieving revision 1.118 diff -u -r1.118 machdep.c --- sys/arch/cobalt/cobalt/machdep.c 27 Jul 2016 11:13:14 -0000 1.118 +++ sys/arch/cobalt/cobalt/machdep.c 22 Dec 2016 10:33:04 -0000 @@@@ -252,8 +252,8 @@@@ if (bi_msg != NULL) printf("%s: magic=%#x bip=%p\n", bi_msg, bim, bip); - uvm_setpagesize(); - + uvm_md_init(); + /* * The boot command is passed in the top 512 bytes, * so don't clobber that. Index: sys/arch/dreamcast/dreamcast/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/dreamcast/dreamcast/machdep.c,v retrieving revision 1.45 diff -u -r1.45 machdep.c --- sys/arch/dreamcast/dreamcast/machdep.c 24 Mar 2014 20:06:31 -0000 1.45 +++ sys/arch/dreamcast/dreamcast/machdep.c 22 Dec 2016 10:33:05 -0000 @@@@ -103,6 +103,7 @@@@ #include + #include "ksyms.h" /* the following is used externally (sysctl_hw) */ @@@@ -130,6 +131,7 @@@@ /* Load memory to UVM */ physmem = atop(IOM_RAM_SIZE); kernend = atop(round_page(SH3_P1SEG_TO_PHYS(end))); + uvm_page_physload( kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), Index: sys/arch/emips/emips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/emips/emips/machdep.c,v retrieving revision 1.11 diff -u -r1.11 machdep.c --- sys/arch/emips/emips/machdep.c 11 Jun 2015 08:22:08 -0000 1.11 +++ sys/arch/emips/emips/machdep.c 22 Dec 2016 10:33:05 -0000 @@@@ -59,6 +59,7 @@@@ #include #include +#include #include @@@@ -225,10 +226,7 @@@@ if (bootinfo_msg != NULL) printf(bootinfo_msg); #endif - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Copy exception-dispatch code down to exception vector. Index: sys/arch/epoc32/epoc32/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/epoc32/epoc32/machdep.c,v retrieving revision 1.4 diff -u -r1.4 machdep.c --- sys/arch/epoc32/epoc32/machdep.c 13 Sep 2014 18:08:40 -0000 1.4 +++ sys/arch/epoc32/epoc32/machdep.c 22 Dec 2016 10:33:06 -0000 @@@@ -440,7 +440,7 @@@@ undefined_init(); /* Load memory into UVM. */ - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload( atop(_end_physical), atop(physical_end), atop(_end_physical), atop(physical_end), Index: sys/arch/evbarm/adi_brh/brh_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/adi_brh/brh_machdep.c,v retrieving revision 1.43 diff -u -r1.43 brh_machdep.c --- sys/arch/evbarm/adi_brh/brh_machdep.c 13 Sep 2014 18:08:38 -0000 1.43 +++ sys/arch/evbarm/adi_brh/brh_machdep.c 22 Dec 2016 10:33:06 -0000 @@@@ -757,7 +757,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/armadillo/armadillo9_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/armadillo/armadillo9_machdep.c,v retrieving revision 1.28 diff -u -r1.28 armadillo9_machdep.c --- sys/arch/evbarm/armadillo/armadillo9_machdep.c 13 Sep 2014 18:08:38 -0000 1.28 +++ sys/arch/evbarm/armadillo/armadillo9_machdep.c 22 Dec 2016 10:33:06 -0000 @@@@ -813,7 +813,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c,v retrieving revision 1.29 diff -u -r1.29 g42xxeb_machdep.c --- sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c 13 Sep 2014 18:08:38 -0000 1.29 +++ sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c 22 Dec 2016 10:33:07 -0000 @@@@ -828,7 +828,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/gemini/gemini_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/gemini/gemini_machdep.c,v retrieving revision 1.22 diff -u -r1.22 gemini_machdep.c --- sys/arch/evbarm/gemini/gemini_machdep.c 18 Aug 2013 15:58:20 -0000 1.22 +++ sys/arch/evbarm/gemini/gemini_machdep.c 22 Dec 2016 10:33:07 -0000 @@@@ -707,8 +707,8 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ - + uvm_md_init(); + #if (GEMINI_RAM_RESV_PBASE != 0) uvm_page_physload(atop(physical_freestart), atop(GEMINI_RAM_RESV_PBASE), atop(physical_freestart), atop(GEMINI_RAM_RESV_PBASE), Index: sys/arch/evbarm/hdl_g/hdlg_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/hdl_g/hdlg_machdep.c,v retrieving revision 1.22 diff -u -r1.22 hdlg_machdep.c --- sys/arch/evbarm/hdl_g/hdlg_machdep.c 13 Sep 2014 18:08:39 -0000 1.22 +++ sys/arch/evbarm/hdl_g/hdlg_machdep.c 22 Dec 2016 10:33:07 -0000 @@@@ -595,7 +595,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/imx31/imx31lk_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/imx31/imx31lk_machdep.c,v retrieving revision 1.18 diff -u -r1.18 imx31lk_machdep.c --- sys/arch/evbarm/imx31/imx31lk_machdep.c 13 Sep 2014 18:08:39 -0000 1.18 +++ sys/arch/evbarm/imx31/imx31lk_machdep.c 22 Dec 2016 10:33:07 -0000 @@@@ -692,7 +692,7 @@@@ /* Load memory into UVM. */ printf("page "); - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/iq80310/iq80310_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/iq80310/iq80310_machdep.c,v retrieving revision 1.85 diff -u -r1.85 iq80310_machdep.c --- sys/arch/evbarm/iq80310/iq80310_machdep.c 13 Sep 2014 18:08:39 -0000 1.85 +++ sys/arch/evbarm/iq80310/iq80310_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -717,7 +717,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/iq80321/iq80321_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/iq80321/iq80321_machdep.c,v retrieving revision 1.55 diff -u -r1.55 iq80321_machdep.c --- sys/arch/evbarm/iq80321/iq80321_machdep.c 13 Sep 2014 18:08:39 -0000 1.55 +++ sys/arch/evbarm/iq80321/iq80321_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -742,7 +742,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/ixdp425/ixdp425_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/ixdp425/ixdp425_machdep.c,v retrieving revision 1.36 diff -u -r1.36 ixdp425_machdep.c --- sys/arch/evbarm/ixdp425/ixdp425_machdep.c 5 Mar 2015 08:09:44 -0000 1.36 +++ sys/arch/evbarm/ixdp425/ixdp425_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -709,7 +709,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/ixm1200/ixm1200_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c,v retrieving revision 1.56 diff -u -r1.56 ixm1200_machdep.c --- sys/arch/evbarm/ixm1200/ixm1200_machdep.c 13 Sep 2014 18:08:39 -0000 1.56 +++ sys/arch/evbarm/ixm1200/ixm1200_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -676,7 +676,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/lubbock/lubbock_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/lubbock/lubbock_machdep.c,v retrieving revision 1.33 diff -u -r1.33 lubbock_machdep.c --- sys/arch/evbarm/lubbock/lubbock_machdep.c 13 Sep 2014 18:08:39 -0000 1.33 +++ sys/arch/evbarm/lubbock/lubbock_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -899,7 +899,7 @@@@ /* Load memory into UVM. */ printf("page "); - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/mini2440/mini2440_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/mini2440/mini2440_machdep.c,v retrieving revision 1.9 diff -u -r1.9 mini2440_machdep.c --- sys/arch/evbarm/mini2440/mini2440_machdep.c 13 Sep 2014 18:08:39 -0000 1.9 +++ sys/arch/evbarm/mini2440/mini2440_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -886,7 +886,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c,v retrieving revision 1.20 diff -u -r1.20 npwr_fc_machdep.c --- sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c 13 Sep 2014 18:08:39 -0000 1.20 +++ sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -712,7 +712,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/nslu2/nslu2_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/nslu2/nslu2_machdep.c,v retrieving revision 1.26 diff -u -r1.26 nslu2_machdep.c --- sys/arch/evbarm/nslu2/nslu2_machdep.c 5 Mar 2015 08:09:44 -0000 1.26 +++ sys/arch/evbarm/nslu2/nslu2_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -777,7 +777,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/osk5912/osk5912_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/osk5912/osk5912_machdep.c,v retrieving revision 1.15 diff -u -r1.15 osk5912_machdep.c --- sys/arch/evbarm/osk5912/osk5912_machdep.c 18 Aug 2013 15:58:21 -0000 1.15 +++ sys/arch/evbarm/osk5912/osk5912_machdep.c 22 Dec 2016 10:33:08 -0000 @@@@ -447,7 +447,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c,v retrieving revision 1.35 diff -u -r1.35 smdk2410_machdep.c --- sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c 13 Sep 2014 18:08:39 -0000 1.35 +++ sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c 22 Dec 2016 10:33:09 -0000 @@@@ -844,7 +844,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c,v retrieving revision 1.42 diff -u -r1.42 smdk2800_machdep.c --- sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c 13 Sep 2014 18:08:39 -0000 1.42 +++ sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c 22 Dec 2016 10:33:09 -0000 @@@@ -761,7 +761,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c,v retrieving revision 1.16 diff -u -r1.16 sdp24xx_machdep.c --- sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c 18 Aug 2013 15:58:21 -0000 1.16 +++ sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c 22 Dec 2016 10:33:09 -0000 @@@@ -541,7 +541,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/tsarm/tsarm_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/tsarm/tsarm_machdep.c,v retrieving revision 1.23 diff -u -r1.23 tsarm_machdep.c --- sys/arch/evbarm/tsarm/tsarm_machdep.c 13 Sep 2014 18:08:39 -0000 1.23 +++ sys/arch/evbarm/tsarm/tsarm_machdep.c 22 Dec 2016 10:33:09 -0000 @@@@ -726,7 +726,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbarm/viper/viper_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbarm/viper/viper_machdep.c,v retrieving revision 1.24 diff -u -r1.24 viper_machdep.c --- sys/arch/evbarm/viper/viper_machdep.c 13 Sep 2014 18:08:39 -0000 1.24 +++ sys/arch/evbarm/viper/viper_machdep.c 22 Dec 2016 10:33:09 -0000 @@@@ -746,7 +746,7 @@@@ /* Load memory into UVM. */ printf("page "); - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/evbmips/adm5120/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/adm5120/machdep.c,v retrieving revision 1.24 diff -u -r1.24 machdep.c --- sys/arch/evbmips/adm5120/machdep.c 26 Jun 2015 22:12:21 -0000 1.24 +++ sys/arch/evbmips/adm5120/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -292,10 +292,7 @@@@ */ mips_vector_init(NULL, false); - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); adm5120_setcpufreq(); Index: sys/arch/evbmips/alchemy/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/alchemy/machdep.c,v retrieving revision 1.55 diff -u -r1.55 machdep.c --- sys/arch/evbmips/alchemy/machdep.c 26 Jun 2015 22:11:10 -0000 1.55 +++ sys/arch/evbmips/alchemy/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -179,10 +179,7 @@@@ */ mips_vector_init(NULL, false); - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Use YAMON's CPU frequency if available. Index: sys/arch/evbmips/atheros/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/atheros/machdep.c,v retrieving revision 1.30 diff -u -r1.30 machdep.c --- sys/arch/evbmips/atheros/machdep.c 26 Jun 2015 22:11:10 -0000 1.30 +++ sys/arch/evbmips/atheros/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -207,10 +207,7 @@@@ */ cal_timer(); - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Look at arguments passed to us and compute boothowto. Index: sys/arch/evbmips/cavium/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/cavium/machdep.c,v retrieving revision 1.8 diff -u -r1.8 machdep.c --- sys/arch/evbmips/cavium/machdep.c 20 Oct 2016 07:26:03 -0000 1.8 +++ sys/arch/evbmips/cavium/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -220,8 +220,7 @@@@ mach_init_vector(); - /* set the VM page size */ - uvm_setpagesize(); + uvm_md_init(); mach_init_bus_space(); Index: sys/arch/evbmips/gdium/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/gdium/machdep.c,v retrieving revision 1.19 diff -u -r1.19 machdep.c --- sys/arch/evbmips/gdium/machdep.c 11 Jul 2016 16:18:56 -0000 1.19 +++ sys/arch/evbmips/gdium/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -235,8 +235,7 @@@@ */ mips_vector_init(NULL, false); - /* set the VM page size */ - uvm_setpagesize(); + uvm_md_init(); memsize = 256*1024*1024; physmem = btoc(memsize); Index: sys/arch/evbmips/ingenic/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/ingenic/machdep.c,v retrieving revision 1.11 diff -u -r1.11 machdep.c --- sys/arch/evbmips/ingenic/machdep.c 26 Aug 2016 13:53:36 -0000 1.11 +++ sys/arch/evbmips/ingenic/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -176,7 +176,7 @@@@ cpu_setmodel("Ingenic XBurst"); mips_vector_init(NULL, false); cal_timer(); - uvm_setpagesize(); + uvm_md_init(); /* * Look at arguments passed to us and compute boothowto. */ Index: sys/arch/evbmips/loongson/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/loongson/machdep.c,v retrieving revision 1.6 diff -u -r1.6 machdep.c --- sys/arch/evbmips/loongson/machdep.c 24 Mar 2014 20:06:31 -0000 1.6 +++ sys/arch/evbmips/loongson/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -316,9 +316,8 @@@@ DPRINTF(("mips_vector_init ")); mips_vector_init(NULL, false); - DPRINTF(("uvm_setpagesize\n")); - /* set the VM page size */ - uvm_setpagesize(); + DPRINTF(("uvm_md_init\n")); + uvm_md_init(); #if NKSYMS || defined(DDB) || defined(MODULAR) //ksyms_addsyms_elf((vaddr_t)esym - (vaddr_t)ssym, ssym, esym); #endif Index: sys/arch/evbmips/malta/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/malta/machdep.c,v retrieving revision 1.45 diff -u -r1.45 machdep.c --- sys/arch/evbmips/malta/machdep.c 11 Jul 2016 16:18:56 -0000 1.45 +++ sys/arch/evbmips/malta/machdep.c 22 Dec 2016 10:33:10 -0000 @@@@ -181,8 +181,7 @@@@ */ mips_vector_init(NULL, false); - /* set the VM page size */ - uvm_setpagesize(); + uvm_md_init(); physmem = btoc(memsize); Index: sys/arch/evbmips/rasoc/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/rasoc/machdep.c,v retrieving revision 1.12 diff -u -r1.12 machdep.c --- sys/arch/evbmips/rasoc/machdep.c 5 Oct 2016 15:54:58 -0000 1.12 +++ sys/arch/evbmips/rasoc/machdep.c 22 Dec 2016 10:33:11 -0000 @@@@ -146,10 +146,7 @@@@ */ cal_timer(); - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Look at arguments passed to us and compute boothowto. Index: sys/arch/evbmips/rmixl/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/rmixl/machdep.c,v retrieving revision 1.17 diff -u -r1.17 machdep.c --- sys/arch/evbmips/rmixl/machdep.c 30 Jun 2015 02:39:03 -0000 1.17 +++ sys/arch/evbmips/rmixl/machdep.c 22 Dec 2016 10:33:11 -0000 @@@@ -265,8 +265,7 @@@@ /* get system info from firmware */ memsize = rmixlfw_init(infop); - /* set the VM page size */ - uvm_setpagesize(); + uvm_md_init(); physmem = btoc(memsize); Index: sys/arch/evbppc/ev64260/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbppc/ev64260/machdep.c,v retrieving revision 1.31 diff -u -r1.31 machdep.c --- sys/arch/evbppc/ev64260/machdep.c 25 Feb 2014 14:33:32 -0000 1.31 +++ sys/arch/evbppc/ev64260/machdep.c 22 Dec 2016 10:33:11 -0000 @@@@ -224,10 +224,7 @@@@ consinit(); - /* - * Set the page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Initialize pmap module. Index: sys/arch/evbppc/mpc85xx/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbppc/mpc85xx/machdep.c,v retrieving revision 1.41 diff -u -r1.41 machdep.c --- sys/arch/evbppc/mpc85xx/machdep.c 30 Jan 2015 15:04:35 -0000 1.41 +++ sys/arch/evbppc/mpc85xx/machdep.c 22 Dec 2016 10:33:11 -0000 @@@@ -1267,10 +1267,7 @@@@ mtspr(SPR_TCR, TCR_WIE | mfspr(SPR_TCR)); - /* - * Set the page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Initialize the pmap. Index: sys/arch/evbppc/pmppc/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbppc/pmppc/machdep.c,v retrieving revision 1.12 diff -u -r1.12 machdep.c --- sys/arch/evbppc/pmppc/machdep.c 1 Mar 2013 18:25:39 -0000 1.12 +++ sys/arch/evbppc/pmppc/machdep.c 22 Dec 2016 10:33:11 -0000 @@@@ -218,10 +218,7 @@@@ printf("console set up\n"); - /* - * Set the page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Initialize pmap module. Index: sys/arch/ews4800mips/ews4800mips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/ews4800mips/ews4800mips/machdep.c,v retrieving revision 1.26 diff -u -r1.26 machdep.c --- sys/arch/ews4800mips/ews4800mips/machdep.c 24 Mar 2014 20:06:32 -0000 1.26 +++ sys/arch/ews4800mips/ews4800mips/machdep.c 22 Dec 2016 10:33:12 -0000 @@@@ -110,8 +110,8 @@@@ option(argc, argv, bi); - uvm_setpagesize(); - + uvm_md_init(); + /* Fill mem_clusters and mem_cluster_cnt */ (*platform.mem_init)(kernel_text, (bi && bi->bi_nsym) ? (void *)bi->bi_esym : end); Index: sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c,v retrieving revision 1.22 diff -u -r1.22 pxa2x0_hpc_machdep.c --- sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c 13 Sep 2014 18:09:50 -0000 1.22 +++ sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c 22 Dec 2016 10:33:16 -0000 @@@@ -608,7 +608,7 @@@@ #endif /* Load memory into UVM. */ - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); for (loop = 0; loop < bootconfig.dramblocks; loop++) { paddr_t dblk_start = (paddr_t)bootconfig.dram[loop].address; paddr_t dblk_end = dblk_start Index: sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c,v retrieving revision 1.10 diff -u -r1.10 sa11x0_hpc_machdep.c --- sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c 13 Sep 2014 18:09:50 -0000 1.10 +++ sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c 22 Dec 2016 10:33:16 -0000 @@@@ -537,7 +537,7 @@@@ #endif /* Load memory into UVM. */ - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); for (loop = 0; loop < bootconfig.dramblocks; loop++) { paddr_t dblk_start = (paddr_t)bootconfig.dram[loop].address; paddr_t dblk_end = dblk_start Index: sys/arch/hpcmips/hpcmips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hpcmips/hpcmips/machdep.c,v retrieving revision 1.120 diff -u -r1.120 machdep.c --- sys/arch/hpcmips/hpcmips/machdep.c 30 Jun 2015 02:39:03 -0000 1.120 +++ sys/arch/hpcmips/hpcmips/machdep.c 22 Dec 2016 10:33:17 -0000 @@@@ -310,7 +310,7 @@@@ * Set the VM page size. */ uvmexp.pagesize = NBPG; /* Notify the VM system of our page size. */ - uvm_setpagesize(); + uvm_md_init(); /* * Copy exception-dispatch code down to exception vector. Index: sys/arch/hppa/hppa/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/hppa/hppa/pmap.c,v retrieving revision 1.99 diff -u -r1.99 pmap.c --- sys/arch/hppa/hppa/pmap.c 8 Aug 2014 07:30:51 -0000 1.99 +++ sys/arch/hppa/hppa/pmap.c 22 Dec 2016 10:33:20 -0000 @@@@ -675,8 +675,8 @@@@ DPRINTF(PDB_FOLLOW|PDB_INIT, ("%s(0x%lx)\n", __func__, vstart)); - uvm_setpagesize(); - + uvm_md_init(); + hppa_prot[UVM_PROT_NONE] = TLB_AR_NA; hppa_prot[UVM_PROT_READ] = TLB_AR_R; hppa_prot[UVM_PROT_WRITE] = TLB_AR_RW; Index: sys/arch/i386/i386/machdep.c d349 4 a352 4 retrieving revision 1.770 diff -u -r1.770 machdep.c --- sys/arch/i386/i386/machdep.c 20 Dec 2016 14:03:15 -0000 1.770 +++ sys/arch/i386/i386/machdep.c 22 Dec 2016 10:33:23 -0000 d430 1 a430 15 @@@@ -1188,11 +1161,8 @@@@ cpu_info_primary.ci_pae_l3_pdir = (pd_entry_t *)(rcr3() + KERNBASE); #endif /* PAE && !XEN */ - /* - * Initialize PAGE_SIZE-dependent variables. - */ - uvm_setpagesize(); - + uvm_md_init(); + /* * Start with 2 color bins -- this is just a guess to get us * started. We'll recolor when we determine the largest cache Index: sys/arch/ia64/ia64/machdep.c d433 4 a436 4 retrieving revision 1.35 diff -u -r1.35 machdep.c --- sys/arch/ia64/ia64/machdep.c 14 Mar 2014 17:45:37 -0000 1.35 +++ sys/arch/ia64/ia64/machdep.c 22 Dec 2016 10:33:25 -0000 d466 3 a468 2 @@@@ -465,8 +466,7 @@@@ */ a469 2 uvmexp.pagesize = PAGE_SIZE; - uvm_setpagesize(); a470 2 + uvm_md_init(); d473 2 a474 1 Index: sys/arch/ia64/ia64/pmap.c d479 2 a480 2 --- sys/arch/ia64/ia64/pmap.c 10 Mar 2014 13:47:45 -0000 1.32 +++ sys/arch/ia64/ia64/pmap.c 22 Dec 2016 10:33:25 -0000 d617 1 a617 17 Index: sys/arch/iyonix/iyonix/iyonix_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/iyonix/iyonix/iyonix_machdep.c,v retrieving revision 1.24 diff -u -r1.24 iyonix_machdep.c --- sys/arch/iyonix/iyonix/iyonix_machdep.c 13 Sep 2014 18:08:39 -0000 1.24 +++ sys/arch/iyonix/iyonix/iyonix_machdep.c 22 Dec 2016 10:33:27 -0000 @@@@ -780,7 +780,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/arch/luna68k/luna68k/pmap_bootstrap.c d620 7 a626 12 retrieving revision 1.36 diff -u -r1.36 pmap_bootstrap.c --- sys/arch/luna68k/luna68k/pmap_bootstrap.c 26 Jan 2013 15:46:24 -0000 1.36 +++ sys/arch/luna68k/luna68k/pmap_bootstrap.c 22 Dec 2016 10:33:28 -0000 @@@@ -51,7 +51,8 @@@@ extern char *etext; -extern int maxmem, physmem; +extern int maxmem; +extern psize_t physmem; extern paddr_t avail_start, avail_end; d629 11 a639 1 Index: sys/arch/m68k/m68k/pmap_motorola.c d642 4 a645 4 retrieving revision 1.67 diff -u -r1.67 pmap_motorola.c --- sys/arch/m68k/m68k/pmap_motorola.c 25 Oct 2013 20:51:14 -0000 1.67 +++ sys/arch/m68k/m68k/pmap_motorola.c 22 Dec 2016 10:33:29 -0000 a669 9 @@@@ -340,7 +342,7 @@@@ * and they require this earlier. */ uvmexp.pagesize = NBPG; - uvm_setpagesize(); + uvm_md_init(); #endif /* d733 1 a733 1 Index: sys/arch/mips/include/pmap.h d738 2 a739 2 --- sys/arch/mips/include/pmap.h 11 Jul 2016 16:15:35 -0000 1.68 +++ sys/arch/mips/include/pmap.h 22 Dec 2016 10:33:37 -0000 d758 1 a758 1 Index: sys/arch/mips/mips/mips_machdep.c d761 4 a764 4 retrieving revision 1.274 diff -u -r1.274 mips_machdep.c --- sys/arch/mips/mips/mips_machdep.c 30 Jul 2016 05:55:34 -0000 1.274 +++ sys/arch/mips/mips/mips_machdep.c 22 Dec 2016 10:33:38 -0000 d825 1 a825 1 Index: sys/arch/mips/mips/pmap_machdep.c d830 2 a831 2 --- sys/arch/mips/mips/pmap_machdep.c 5 Sep 2016 06:59:25 -0000 1.11 +++ sys/arch/mips/mips/pmap_machdep.c 22 Dec 2016 10:33:38 -0000 d868 1 a868 122 Index: sys/arch/mipsco/mipsco/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mipsco/mipsco/machdep.c,v retrieving revision 1.79 diff -u -r1.79 machdep.c --- sys/arch/mipsco/mipsco/machdep.c 26 Jun 2015 22:55:40 -0000 1.79 +++ sys/arch/mipsco/mipsco/machdep.c 22 Dec 2016 10:33:41 -0000 @@@@ -211,11 +211,8 @@@@ if (bi_msg != NULL) printf(bi_msg); - /* - * Set the VM page size. - */ - uvm_setpagesize(); - + uvm_md_init(); + /* Find out how much memory is available. */ physmem = memsize_scan(kernend); Index: sys/arch/netwinder/netwinder/netwinder_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/netwinder/netwinder/netwinder_machdep.c,v retrieving revision 1.83 diff -u -r1.83 netwinder_machdep.c --- sys/arch/netwinder/netwinder/netwinder_machdep.c 13 Sep 2014 18:08:39 -0000 1.83 +++ sys/arch/netwinder/netwinder/netwinder_machdep.c 22 Dec 2016 10:33:42 -0000 @@@@ -477,7 +477,7 @@@@ physmem = (physical_end - physical_start) / PAGE_SIZE; /* Tell the user about the memory */ - printf("physmemory: %d pages at 0x%08lx -> 0x%08lx\n", physmem, + printf("physmemory: %"PRIxPSIZE" pages at 0x%08lx -> 0x%08lx\n", physmem, physical_start, physical_end - 1); /* @@@@ -738,8 +738,8 @@@@ /* Load memory into UVM. */ printf("page "); - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ - + uvm_md_init(); + /* XXX Always one RAM block -- nuke the loop. */ for (loop = 0; loop < bootconfig.dramblocks; loop++) { paddr_t start = (paddr_t)bootconfig.dram[loop].address; Index: sys/arch/newsmips/newsmips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/newsmips/newsmips/machdep.c,v retrieving revision 1.118 diff -u -r1.118 machdep.c --- sys/arch/newsmips/newsmips/machdep.c 21 Jul 2016 19:49:59 -0000 1.118 +++ sys/arch/newsmips/newsmips/machdep.c 22 Dec 2016 10:33:44 -0000 @@@@ -240,11 +240,8 @@@@ kernend = (char *)mips_round_page(esym); #endif - /* - * Set the VM page size. - */ - uvm_setpagesize(); - + uvm_md_init(); + boothowto = x_boothowto; bootdev = x_bootdev; physmem = btoc(x_maxmem); Index: sys/arch/playstation2/playstation2/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/playstation2/playstation2/machdep.c,v retrieving revision 1.31 diff -u -r1.31 machdep.c --- sys/arch/playstation2/playstation2/machdep.c 30 Jun 2015 02:39:04 -0000 1.31 +++ sys/arch/playstation2/playstation2/machdep.c 22 Dec 2016 10:33:46 -0000 @@@@ -114,7 +114,8 @@@@ #ifdef DEBUG bootinfo_dump(); #endif - uvm_setpagesize(); + uvm_md_init(); + physmem = atop(PS2_MEMORY_SIZE); /* Index: sys/arch/pmax/pmax/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/pmax/pmax/machdep.c,v retrieving revision 1.250 diff -u -r1.250 machdep.c --- sys/arch/pmax/pmax/machdep.c 1 Feb 2016 17:39:41 -0000 1.250 +++ sys/arch/pmax/pmax/machdep.c 22 Dec 2016 10:33:46 -0000 @@@@ -220,10 +220,7 @@@@ #else __USE(bootinfo_msg); #endif - /* - * Set the VM page size. - */ - uvm_setpagesize(); + uvm_md_init(); /* * Copy exception-dispatch code down to exception vector. Index: sys/arch/powerpc/ibm4xx/ibm4xx_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/ibm4xx_machdep.c,v retrieving revision 1.21 diff -u -r1.21 ibm4xx_machdep.c --- sys/arch/powerpc/ibm4xx/ibm4xx_machdep.c 16 Dec 2016 04:27:03 -0000 1.21 +++ sys/arch/powerpc/ibm4xx/ibm4xx_machdep.c 22 Dec 2016 10:33:48 -0000 @@@@ -228,7 +228,7 @@@@ */ consinit(); - uvm_setpagesize(); + uvm_md_init(); /* * Initialize pmap module. Index: sys/arch/powerpc/ibm4xx/pmap.c d871 4 a874 4 retrieving revision 1.72 diff -u -r1.72 pmap.c --- sys/arch/powerpc/ibm4xx/pmap.c 27 Jan 2012 19:48:39 -0000 1.72 +++ sys/arch/powerpc/ibm4xx/pmap.c 22 Dec 2016 10:33:48 -0000 d893 1 a893 10 @@@@ -294,7 +294,7 @@@@ * Announce page-size to the VM-system */ uvmexp.pagesize = NBPG; - uvm_setpagesize(); + uvm_md_init(); /* * Get memory. Index: sys/arch/powerpc/isa/isadma_machdep.c d898 2 a899 2 --- sys/arch/powerpc/isa/isadma_machdep.c 26 Feb 2016 18:17:39 -0000 1.10 +++ sys/arch/powerpc/isa/isadma_machdep.c 22 Dec 2016 10:33:54 -0000 d930 1 a930 17 Index: sys/arch/powerpc/oea/ofwoea_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/oea/ofwoea_machdep.c,v retrieving revision 1.38 diff -u -r1.38 ofwoea_machdep.c --- sys/arch/powerpc/oea/ofwoea_machdep.c 25 Mar 2014 16:41:37 -0000 1.38 +++ sys/arch/powerpc/oea/ofwoea_machdep.c 22 Dec 2016 10:33:55 -0000 @@@@ -232,7 +232,7 @@@@ } } - uvm_setpagesize(); + uvm_md_init(); pmap_bootstrap(startkernel, endkernel); Index: sys/arch/powerpc/oea/pmap.c d935 2 a936 2 --- sys/arch/powerpc/oea/pmap.c 14 Feb 2016 18:07:49 -0000 1.93 +++ sys/arch/powerpc/oea/pmap.c 22 Dec 2016 10:33:55 -0000 d1048 1 a1048 17 Index: sys/arch/powerpc/oea/prep_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/oea/prep_machdep.c,v retrieving revision 1.10 diff -u -r1.10 prep_machdep.c --- sys/arch/powerpc/oea/prep_machdep.c 11 Feb 2012 13:53:59 -0000 1.10 +++ sys/arch/powerpc/oea/prep_machdep.c 22 Dec 2016 10:33:55 -0000 @@@@ -163,7 +163,7 @@@@ consinit(); /* Set the page size */ - uvm_setpagesize(); + uvm_md_init(); /* Initialize pmap module */ pmap_bootstrap(startkernel, endkernel); Index: sys/arch/powerpc/powerpc/bus_dma.c d1053 2 a1054 2 --- sys/arch/powerpc/powerpc/bus_dma.c 1 Feb 2012 09:54:03 -0000 1.46 +++ sys/arch/powerpc/powerpc/bus_dma.c 22 Dec 2016 10:33:56 -0000 d1085 1 a1085 66 Index: sys/arch/rs6000/rs6000/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/rs6000/rs6000/machdep.c,v retrieving revision 1.10 diff -u -r1.10 machdep.c --- sys/arch/rs6000/rs6000/machdep.c 20 Jun 2011 07:18:07 -0000 1.10 +++ sys/arch/rs6000/rs6000/machdep.c 22 Dec 2016 10:33:59 -0000 @@@@ -335,7 +335,7 @@@@ setled(0x40400000); /* Initialize pmap module. */ - uvm_setpagesize(); + uvm_md_init(); pmap_bootstrap(startkernel, endkernel); setled(0x40500000); Index: sys/arch/sandpoint/sandpoint/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sandpoint/sandpoint/machdep.c,v retrieving revision 1.65 diff -u -r1.65 machdep.c --- sys/arch/sandpoint/sandpoint/machdep.c 30 Sep 2015 14:18:54 -0000 1.65 +++ sys/arch/sandpoint/sandpoint/machdep.c 22 Dec 2016 10:33:59 -0000 @@@@ -198,8 +198,7 @@@@ /* Initialize the console */ consinit(); - /* Set the page size */ - uvm_setpagesize(); + uvm_md_init(); /* Initialize pmap module */ pmap_bootstrap(startkernel, endkernel); Index: sys/arch/sbmips/sbmips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sbmips/sbmips/machdep.c,v retrieving revision 1.53 diff -u -r1.53 machdep.c --- sys/arch/sbmips/sbmips/machdep.c 24 Mar 2014 19:13:48 -0000 1.53 +++ sys/arch/sbmips/sbmips/machdep.c 22 Dec 2016 10:34:00 -0000 @@@@ -190,7 +190,7 @@@@ consinit(); - uvm_setpagesize(); + uvm_md_init(); /* * Copy exception-dispatch code down to exception vector. Index: sys/arch/sgimips/sgimips/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sgimips/sgimips/machdep.c,v retrieving revision 1.142 diff -u -r1.142 machdep.c --- sys/arch/sgimips/sgimips/machdep.c 3 Nov 2016 22:08:31 -0000 1.142 +++ sys/arch/sgimips/sgimips/machdep.c 22 Dec 2016 10:34:01 -0000 @@@@ -287,7 +287,7 @@@@ cpu_setmodel("%s", arcbios_system_identifier); - uvm_setpagesize(); + uvm_md_init(); /* set up bootinfo structures */ if (magic == BOOTINFO_MAGIC && bip != NULL) { Index: sys/arch/sh3/sh3/pmap.c d1090 2 a1091 2 --- sys/arch/sh3/sh3/pmap.c 3 Sep 2016 09:07:54 -0000 1.78 +++ sys/arch/sh3/sh3/pmap.c 22 Dec 2016 10:34:02 -0000 d1161 1 a1161 19 Index: sys/arch/sh3/sh3/sh3_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sh3/sh3/sh3_machdep.c,v retrieving revision 1.104 diff -u -r1.104 sh3_machdep.c --- sys/arch/sh3/sh3/sh3_machdep.c 2 Nov 2016 00:11:59 -0000 1.104 +++ sys/arch/sh3/sh3/sh3_machdep.c 22 Dec 2016 10:34:02 -0000 @@@@ -190,9 +190,7 @@@@ /* kernel stack setup */ __sh_switch_resume = CPU_IS_SH3 ? sh3_switch_resume : sh4_switch_resume; - /* Set page size (4KB) */ - uvm_setpagesize(); - + uvm_md_init(); /* setup UBC channel A for single-stepping */ #if defined(PTRACE_HOOKS) || defined(DDB) _reg_write_2(SH_(BBRA), 0); /* disable channel A */ Index: sys/arch/sh3/sh3/vm_machdep.c d1166 2 a1167 2 --- sys/arch/sh3/sh3/vm_machdep.c 7 Nov 2013 21:45:04 -0000 1.76 +++ sys/arch/sh3/sh3/vm_machdep.c 22 Dec 2016 10:34:02 -0000 d1185 1 a1185 118 Index: sys/arch/shark/ofw/ofw.c =================================================================== RCS file: /cvsroot/src/sys/arch/shark/ofw/ofw.c,v retrieving revision 1.65 diff -u -r1.65 ofw.c --- sys/arch/shark/ofw/ofw.c 7 Jul 2016 06:55:38 -0000 1.65 +++ sys/arch/shark/ofw/ofw.c 22 Dec 2016 10:34:03 -0000 @@@@ -871,8 +871,7 @@@@ bootconfig.dramblocks = availcnt; } - /* Load memory into UVM. */ - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); /* XXX Please kill this code dead. */ for (i = 0; i < bootconfig.dramblocks; i++) { Index: sys/arch/sparc/sparc/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sparc/sparc/pmap.c,v retrieving revision 1.360 diff -u -r1.360 pmap.c --- sys/arch/sparc/sparc/pmap.c 11 Dec 2015 19:47:52 -0000 1.360 +++ sys/arch/sparc/sparc/pmap.c 22 Dec 2016 10:34:07 -0000 @@@@ -3035,7 +3035,7 @@@@ extern char *kernel_top; uvmexp.pagesize = NBPG; - uvm_setpagesize(); + uvm_md_init(); #if defined(SUN4) && (defined(SUN4C) || defined(SUN4M) || defined(SUN4D)) /* In this case NPTESG is a variable */ Index: sys/arch/sparc64/sparc64/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/sparc64/pmap.c,v retrieving revision 1.304 diff -u -r1.304 pmap.c --- sys/arch/sparc64/sparc64/pmap.c 4 Nov 2016 05:41:01 -0000 1.304 +++ sys/arch/sparc64/sparc64/pmap.c 22 Dec 2016 10:34:11 -0000 @@@@ -778,8 +778,8 @@@@ */ uvmexp.pagesize = NBPG; uvmexp.ncolors = pmap_calculate_colors(); - uvm_setpagesize(); - + uvm_md_init(); + /* * Get hold or the message buffer. */ Index: sys/arch/sun2/sun2/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun2/sun2/pmap.c,v retrieving revision 1.47 diff -u -r1.47 pmap.c --- sys/arch/sun2/sun2/pmap.c 24 Mar 2014 18:50:31 -0000 1.47 +++ sys/arch/sun2/sun2/pmap.c 22 Dec 2016 10:34:12 -0000 @@@@ -1700,7 +1700,7 @@@@ avail_next = avail_start; uvmexp.pagesize = NBPG; - uvm_setpagesize(); + uvm_md_init(); /* after setting up some structures */ Index: sys/arch/sun3/sun3/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun3/sun3/pmap.c,v retrieving revision 1.170 diff -u -r1.170 pmap.c --- sys/arch/sun3/sun3/pmap.c 7 Nov 2013 17:50:18 -0000 1.170 +++ sys/arch/sun3/sun3/pmap.c 22 Dec 2016 10:34:14 -0000 @@@@ -1730,7 +1730,7 @@@@ avail_next = avail_start; uvmexp.pagesize = PAGE_SIZE; - uvm_setpagesize(); + uvm_md_init(); /* after setting up some structures */ Index: sys/arch/sun3/sun3x/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun3/sun3x/pmap.c,v retrieving revision 1.113 diff -u -r1.113 pmap.c --- sys/arch/sun3/sun3x/pmap.c 6 Sep 2013 17:43:19 -0000 1.113 +++ sys/arch/sun3/sun3x/pmap.c 22 Dec 2016 10:34:15 -0000 @@@@ -893,8 +893,8 @@@@ /* Notify the VM system of our page size. */ uvmexp.pagesize = PAGE_SIZE; - uvm_setpagesize(); - + uvm_md_init(); + pmap_page_upload(); } Index: sys/arch/usermode/usermode/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/usermode/usermode/machdep.c,v retrieving revision 1.53 diff -u -r1.53 machdep.c --- sys/arch/usermode/usermode/machdep.c 8 Feb 2012 17:55:21 -0000 1.53 +++ sys/arch/usermode/usermode/machdep.c 22 Dec 2016 10:34:16 -0000 @@@@ -213,7 +213,7 @@@@ } boothowto = tmpopt; - uvm_setpagesize(); + uvm_md_init(); uvmexp.ncolors = 2; pmap_bootstrap(); Index: sys/arch/vax/vax/ka650.c d1190 2 a1191 2 --- sys/arch/vax/vax/ka650.c 14 Dec 2010 23:44:49 -0000 1.36 +++ sys/arch/vax/vax/ka650.c 22 Dec 2016 10:34:18 -0000 d1201 1 a1201 1 Index: sys/arch/vax/vax/pmap.c d1204 4 a1207 4 retrieving revision 1.182 diff -u -r1.182 pmap.c --- sys/arch/vax/vax/pmap.c 2 Feb 2012 18:59:44 -0000 1.182 +++ sys/arch/vax/vax/pmap.c 22 Dec 2016 10:34:19 -0000 a1215 9 @@@@ -302,7 +303,7 @@@@ /* Set logical page size */ uvmexp.pagesize = NBPG; - uvm_setpagesize(); + uvm_md_init(); physmem = btoc(avail_end); d1240 1 a1240 1 Index: sys/arch/x68k/x68k/machdep.c d1245 2 a1246 2 --- sys/arch/x68k/x68k/machdep.c 2 Dec 2016 12:43:07 -0000 1.194 +++ sys/arch/x68k/x68k/machdep.c 22 Dec 2016 10:34:22 -0000 d1325 1 a1325 82 Index: sys/arch/x68k/x68k/pmap_bootstrap.c =================================================================== RCS file: /cvsroot/src/sys/arch/x68k/x68k/pmap_bootstrap.c,v retrieving revision 1.60 diff -u -r1.60 pmap_bootstrap.c --- sys/arch/x68k/x68k/pmap_bootstrap.c 27 Oct 2013 02:06:06 -0000 1.60 +++ sys/arch/x68k/x68k/pmap_bootstrap.c 22 Dec 2016 10:34:22 -0000 @@@@ -52,7 +52,8 @@@@ extern char *etext; -extern int maxmem, physmem; +extern int maxmem; +extern psize_t physmem; extern paddr_t avail_start, avail_end; /* Index: sys/arch/zaurus/zaurus/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/zaurus/zaurus/machdep.c,v retrieving revision 1.37 diff -u -r1.37 machdep.c --- sys/arch/zaurus/zaurus/machdep.c 7 Jul 2016 06:55:40 -0000 1.37 +++ sys/arch/zaurus/zaurus/machdep.c 22 Dec 2016 10:34:30 -0000 @@@@ -1090,7 +1090,7 @@@@ #ifdef VERBOSE_INIT_ARM printf("page "); #endif - uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_md_init(); uvm_page_physload(atop(physical_freestart), atop(physical_freeend), atop(physical_freestart), atop(physical_freeend), VM_FREELIST_DEFAULT); Index: sys/rump/librump/rumpkern/emul.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpkern/emul.c,v retrieving revision 1.179 diff -u -r1.179 emul.c --- sys/rump/librump/rumpkern/emul.c 26 Jan 2016 23:12:17 -0000 1.179 +++ sys/rump/librump/rumpkern/emul.c 22 Dec 2016 10:38:34 -0000 @@@@ -54,7 +54,7 @@@@ * calling rump_init() */ #define PHYSMEM 512*256 -int physmem = PHYSMEM; +psize_t physmem = PHYSMEM; int nkmempages = PHYSMEM/2; /* from le chapeau */ #undef PHYSMEM Index: sys/sys/systm.h =================================================================== RCS file: /cvsroot/src/sys/sys/systm.h,v retrieving revision 1.271 diff -u -r1.271 systm.h --- sys/sys/systm.h 6 Jul 2016 05:20:48 -0000 1.271 +++ sys/sys/systm.h 22 Dec 2016 10:38:38 -0000 @@@@ -82,7 +82,7 @@@@ extern int selwait; /* select timeout address */ extern int maxmem; /* max memory per process */ -extern int physmem; /* physical memory */ +extern psize_t physmem; /* physical memory */ extern dev_t dumpdev; /* dump device */ extern dev_t dumpcdev; /* dump device (character equivalent) */ Index: sys/uvm/Makefile =================================================================== RCS file: /cvsroot/src/sys/uvm/Makefile,v retrieving revision 1.9 diff -u -r1.9 Makefile --- sys/uvm/Makefile 11 Feb 2006 12:45:07 -0000 1.9 +++ sys/uvm/Makefile 22 Dec 2016 10:38:43 -0000 @@@@ -5,7 +5,7 @@@@ INCS= uvm.h uvm_amap.h uvm_anon.h uvm_aobj.h uvm_device.h \ uvm_extern.h uvm_fault.h uvm_fault_i.h uvm_glue.h \ uvm_km.h uvm_loan.h \ - uvm_map.h uvm_object.h uvm_page.h \ + uvm_map.h uvm_object.h uvm_page.h uvm_physseg.h \ uvm_pager.h uvm_param.h uvm_pdaemon.h uvm_pglist.h \ uvm_pmap.h uvm_prot.h uvm_stat.h \ uvm_swap.h Index: sys/uvm/files.uvm d1330 2 a1331 2 --- sys/uvm/files.uvm 1 Dec 2016 02:09:03 -0000 1.27 +++ sys/uvm/files.uvm 22 Dec 2016 10:38:43 -0000 d1348 1 a1348 56 Index: sys/uvm/uvm.h =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm.h,v retrieving revision 1.66 diff -u -r1.66 uvm.h --- sys/uvm/uvm.h 13 Apr 2015 22:04:44 -0000 1.66 +++ sys/uvm/uvm.h 22 Dec 2016 10:38:43 -0000 @@@@ -57,6 +57,7 @@@@ #include #include #include +#include #include #include Index: sys/uvm/uvm_extern.h =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_extern.h,v retrieving revision 1.198 diff -u -r1.198 uvm_extern.h --- sys/uvm/uvm_extern.h 20 Jul 2016 12:38:43 -0000 1.198 +++ sys/uvm/uvm_extern.h 22 Dec 2016 10:38:44 -0000 @@@@ -475,6 +475,14 @@@@ #endif /* + * Include the uvm_hotplug(9) API unconditionally until + * uvm_page_physload() et. al. are obsoleted + * + * After this, MD code will have to explicitly include it if needed. + */ +#include + +/* * helpers for calling ubc_release() */ #ifdef PMAP_CACHE_VIVT @@@@ -619,6 +627,7 @@@@ /* uvm_init.c */ +void uvm_md_init(void); void uvm_init(void); /* uvm_io.c */ @@@@ -708,9 +717,6 @@@@ struct vm_page *); void uvm_pagerealloc(struct vm_page *, struct uvm_object *, voff_t); -/* Actually, uvm_page_physload takes PF#s which need their own type */ -void uvm_page_physload(paddr_t, paddr_t, paddr_t, - paddr_t, int); void uvm_setpagesize(void); /* uvm_pager.c */ Index: sys/uvm/uvm_init.c d1351 4 a1354 4 retrieving revision 1.46 diff -u -r1.46 uvm_init.c --- sys/uvm/uvm_init.c 3 Apr 2015 01:03:42 -0000 1.46 +++ sys/uvm/uvm_init.c 22 Dec 2016 10:38:44 -0000 d1363 6 a1368 2 @@@@ -69,6 +70,20 @@@@ kmutex_t uvm_swap_data_lock; d1371 14 a1384 15 + * uvm_md_init: Init dependant on the MD boot context. + * called from MD code. + */ + +void +uvm_md_init(void) +{ + uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ +#ifdef UVM_HOTPLUG /* XXX: Notyet */ + uvm_physseg_init(); +#endif +} + +/* * uvm_init: init the VM system. called from kern/init_main.c. d1387 6 a1392 7 Index: sys/uvm/uvm_page.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_page.c,v retrieving revision 1.187 diff -u -r1.187 uvm_page.c --- sys/uvm/uvm_page.c 11 Apr 2015 19:24:13 -0000 1.187 +++ sys/uvm/uvm_page.c 22 Dec 2016 10:38:44 -0000 a1418 9 @@@@ -116,7 +105,7 @@@@ /* * physical memory size; */ -int physmem; +psize_t physmem; /* * local variables d1628 1 a1628 1 @@@@ -727,228 +667,6 @@@@ d1640 1 a1640 1 -void d1666 1 a1666 1 - return; d1745 2 d1859 1 a1859 1 @@@@ -956,12 +674,12 @@@@ d1877 1 a1877 1 @@@@ -985,7 +703,8 @@@@ d1887 1 a1887 9 @@@@ -1094,6 +813,7 @@@@ uvm.cpus[cpu_index(ci)] = ucpu; ci->ci_data.cpu_uvm = ucpu; for (lcv = 0; lcv < VM_NFREELIST; lcv++) { + pgfl.pgfl_buckets = (bucketarray + (lcv * uvmexp.ncolors)); uvm_page_init_buckets(&pgfl); ucpu->page_free[lcv].pgfl_buckets = pgfl.pgfl_buckets; @@@@ -1219,7 +939,8 @@@@ d1897 1 a1897 1 @@@@ -2005,7 +1726,7 @@@@ d1906 1 a1906 1 @@@@ -2015,11 +1736,11 @@@@ d1922 1 a1922 1 @@@@ -2135,7 +1856,8 @@@@ d1932 1 a1932 1 @@@@ -2143,8 +1865,14 @@@@ d1949 1 a1949 1 Index: sys/uvm/uvm_page.h d1954 2 a1955 2 --- sys/uvm/uvm_page.h 23 Mar 2015 07:59:12 -0000 1.80 +++ sys/uvm/uvm_page.h 22 Dec 2016 10:38:44 -0000 d2018 1 a2018 1 Index: sys/uvm/uvm_pglist.c d2023 2 a2024 2 --- sys/uvm/uvm_pglist.c 26 Oct 2014 01:42:07 -0000 1.67 +++ sys/uvm/uvm_pglist.c 22 Dec 2016 10:38:45 -0000 d2345 25 a2369 1 Index: sys/uvm/pmap/pmap.c d2374 2 a2375 2 --- sys/uvm/pmap/pmap.c 1 Dec 2016 02:15:08 -0000 1.25 +++ sys/uvm/pmap/pmap.c 22 Dec 2016 10:38:45 -0000 @ 1.2 log @Implement gimpy's suggestion of using uvm_md_init() @ text @d7 1 a7 1 +++ share/man/man9/Makefile 22 Dec 2016 09:18:20 -0000 d25 1 a25 1 +++ sys/arch/acorn26/acorn26/pmap.c 22 Dec 2016 09:18:27 -0000 d64 1 a64 1 +++ sys/arch/acorn26/acorn26/start.c 22 Dec 2016 09:18:28 -0000 d80 1 a80 1 +++ sys/arch/acorn32/acorn32/rpc_machdep.c 22 Dec 2016 09:18:33 -0000 d97 1 a97 1 +++ sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c 22 Dec 2016 09:18:33 -0000 d114 1 a114 1 +++ sys/arch/algor/algor/machdep.c 22 Dec 2016 09:18:39 -0000 d130 1 a130 1 +++ sys/arch/alpha/alpha/machdep.c 22 Dec 2016 09:18:42 -0000 d191 1 a191 1 +++ sys/arch/alpha/alpha/pmap.c 22 Dec 2016 09:18:42 -0000 d286 1 a286 1 +++ sys/arch/amd64/amd64/machdep.c 22 Dec 2016 09:18:46 -0000 a413 15 Index: sys/arch/amd64/conf/GENERIC =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/conf/GENERIC,v retrieving revision 1.448 diff -u -r1.448 GENERIC --- sys/arch/amd64/conf/GENERIC 18 Dec 2016 04:35:26 -0000 1.448 +++ sys/arch/amd64/conf/GENERIC 22 Dec 2016 09:18:46 -0000 @@@@ -50,6 +50,7 @@@@ # and can deal with holes in the memory layout. #options PHYSMEM_MAX_SIZE=64 # max size of physical memory (in MB) #options PHYSMEM_MAX_ADDR=2048 # don't use memory above this (in MB) +#options UVM_HOTPLUG # Experimental uvm_hotplug(9) api. # Standard system options d420 1 a420 1 +++ sys/arch/amiga/amiga/pmap_bootstrap.c 22 Dec 2016 09:18:47 -0000 d438 1 a438 1 +++ sys/arch/amigappc/amigappc/machdep.c 22 Dec 2016 09:18:51 -0000 d457 1 a457 1 +++ sys/arch/arc/arc/machdep.c 22 Dec 2016 09:18:53 -0000 d478 1 a478 1 +++ sys/arch/arm/arm32/arm32_boot.c 22 Dec 2016 09:18:55 -0000 d496 1 a496 1 +++ sys/arch/arm/arm32/bus_dma.c 22 Dec 2016 09:18:55 -0000 d518 1 a518 1 +++ sys/arch/arm/arm32/pmap.c 22 Dec 2016 09:18:56 -0000 d536 1 a536 1 +++ sys/arch/arm/at91/at91bus.c 22 Dec 2016 09:18:56 -0000 a545 14 Index: sys/arch/arm/omap/omap3_sdmavar.h =================================================================== RCS file: /cvsroot/src/sys/arch/arm/omap/omap3_sdmavar.h,v retrieving revision 1.1 diff -u -r1.1 omap3_sdmavar.h --- sys/arch/arm/omap/omap3_sdmavar.h 9 Jan 2013 03:35:11 -0000 1.1 +++ sys/arch/arm/omap/omap3_sdmavar.h 22 Dec 2016 09:19:05 -0000 @@@@ -38,4 +38,4 @@@@ uint32_t omapdma_read_ch_reg(int, int); -#endif /* OMAPDMA_VAR_H */ \ No newline at end of file +#endif /* OMAPDMA_VAR_H */ d552 1 a552 1 +++ sys/arch/atari/atari/pmap_bootstrap.c 22 Dec 2016 09:19:11 -0000 d570 2 a571 10 +++ sys/arch/cesfic/cesfic/machdep.c 22 Dec 2016 09:19:16 -0000 @@@@ -88,6 +88,7 @@@@ #define MAXMEM 64*1024 /* XXX - from cmap.h */ #include +#include #include #include @@@@ -111,7 +112,7 @@@@ a579 8 @@@@ -146,6 +147,7 @@@@ * Tell the VM system about available physical memory. The * fic uses one segment. */ + uvm_physseg_init(); uvm_page_physload(atop(avail_start), atop(avail_end), atop(avail_start), atop(avail_end), VM_FREELIST_DEFAULT); d586 1 a586 1 +++ sys/arch/cobalt/cobalt/machdep.c 22 Dec 2016 09:19:16 -0000 d604 1 a604 1 +++ sys/arch/dreamcast/dreamcast/machdep.c 22 Dec 2016 09:19:17 -0000 d627 1 a627 1 +++ sys/arch/emips/emips/machdep.c 22 Dec 2016 09:19:18 -0000 d654 1 a654 1 +++ sys/arch/epoc32/epoc32/machdep.c 22 Dec 2016 09:19:19 -0000 d670 1 a670 1 +++ sys/arch/evbarm/adi_brh/brh_machdep.c 22 Dec 2016 09:19:19 -0000 d686 1 a686 1 +++ sys/arch/evbarm/armadillo/armadillo9_machdep.c 22 Dec 2016 09:19:19 -0000 d702 1 a702 1 +++ sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c 22 Dec 2016 09:19:20 -0000 d718 1 a718 1 +++ sys/arch/evbarm/gemini/gemini_machdep.c 22 Dec 2016 09:19:20 -0000 d736 1 a736 1 +++ sys/arch/evbarm/hdl_g/hdlg_machdep.c 22 Dec 2016 09:19:20 -0000 d752 1 a752 1 +++ sys/arch/evbarm/imx31/imx31lk_machdep.c 22 Dec 2016 09:19:20 -0000 d768 1 a768 1 +++ sys/arch/evbarm/iq80310/iq80310_machdep.c 22 Dec 2016 09:19:21 -0000 d784 1 a784 1 +++ sys/arch/evbarm/iq80321/iq80321_machdep.c 22 Dec 2016 09:19:21 -0000 d800 1 a800 1 +++ sys/arch/evbarm/ixdp425/ixdp425_machdep.c 22 Dec 2016 09:19:21 -0000 d816 1 a816 1 +++ sys/arch/evbarm/ixm1200/ixm1200_machdep.c 22 Dec 2016 09:19:21 -0000 d832 1 a832 1 +++ sys/arch/evbarm/lubbock/lubbock_machdep.c 22 Dec 2016 09:19:21 -0000 d848 1 a848 1 +++ sys/arch/evbarm/mini2440/mini2440_machdep.c 22 Dec 2016 09:19:21 -0000 d864 1 a864 1 +++ sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c 22 Dec 2016 09:19:21 -0000 d880 1 a880 1 +++ sys/arch/evbarm/nslu2/nslu2_machdep.c 22 Dec 2016 09:19:21 -0000 d896 1 a896 1 +++ sys/arch/evbarm/osk5912/osk5912_machdep.c 22 Dec 2016 09:19:22 -0000 d912 1 a912 1 +++ sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c 22 Dec 2016 09:19:22 -0000 d928 1 a928 1 +++ sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c 22 Dec 2016 09:19:22 -0000 d944 1 a944 1 +++ sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c 22 Dec 2016 09:19:22 -0000 d960 1 a960 1 +++ sys/arch/evbarm/tsarm/tsarm_machdep.c 22 Dec 2016 09:19:22 -0000 d976 1 a976 1 +++ sys/arch/evbarm/viper/viper_machdep.c 22 Dec 2016 09:19:22 -0000 d992 1 a992 1 +++ sys/arch/evbmips/adm5120/machdep.c 22 Dec 2016 09:19:23 -0000 d1011 1 a1011 1 +++ sys/arch/evbmips/alchemy/machdep.c 22 Dec 2016 09:19:23 -0000 d1030 1 a1030 1 +++ sys/arch/evbmips/atheros/machdep.c 22 Dec 2016 09:19:23 -0000 d1049 1 a1049 1 +++ sys/arch/evbmips/cavium/machdep.c 22 Dec 2016 09:19:23 -0000 d1066 1 a1066 1 +++ sys/arch/evbmips/gdium/machdep.c 22 Dec 2016 09:19:23 -0000 d1083 1 a1083 1 +++ sys/arch/evbmips/ingenic/machdep.c 22 Dec 2016 09:19:23 -0000 a1092 14 Index: sys/arch/evbmips/loongson/loongson_clock.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbmips/loongson/loongson_clock.c,v retrieving revision 1.1 diff -u -r1.1 loongson_clock.c --- sys/arch/evbmips/loongson/loongson_clock.c 24 Jun 2016 21:41:37 -0000 1.1 +++ sys/arch/evbmips/loongson/loongson_clock.c 22 Dec 2016 09:19:23 -0000 @@@@ -388,4 +388,4 @@@@ __weak_alias(setstatclockrate, loongson_setstatclockrate); __weak_alias(cpu_initclocks, loongson_initclocks); -__weak_alias(delay, loongson_delay); \ No newline at end of file +__weak_alias(delay, loongson_delay); d1099 1 a1099 1 +++ sys/arch/evbmips/loongson/machdep.c 22 Dec 2016 09:19:23 -0000 d1118 1 a1118 1 +++ sys/arch/evbmips/malta/machdep.c 22 Dec 2016 09:19:24 -0000 d1135 1 a1135 1 +++ sys/arch/evbmips/rasoc/machdep.c 22 Dec 2016 09:19:24 -0000 d1154 1 a1154 1 +++ sys/arch/evbmips/rmixl/machdep.c 22 Dec 2016 09:19:24 -0000 d1171 1 a1171 1 +++ sys/arch/evbppc/ev64260/machdep.c 22 Dec 2016 09:19:24 -0000 d1190 1 a1190 1 +++ sys/arch/evbppc/mpc85xx/machdep.c 22 Dec 2016 09:19:24 -0000 d1209 1 a1209 1 +++ sys/arch/evbppc/pmppc/machdep.c 22 Dec 2016 09:19:24 -0000 a1221 23 Index: sys/arch/evbsh3/evbsh3/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/evbsh3/evbsh3/machdep.c,v retrieving revision 1.75 diff -u -r1.75 machdep.c --- sys/arch/evbsh3/evbsh3/machdep.c 19 Jun 2014 13:20:13 -0000 1.75 +++ sys/arch/evbsh3/evbsh3/machdep.c 22 Dec 2016 09:19:25 -0000 @@@@ -85,6 +85,7 @@@@ #include #include +#include #include @@@@ -303,6 +304,7 @@@@ /* Load memory to UVM */ kernend = atop(round_page(SH3_P1SEG_TO_PHYS(end))); physmem = atop(IOM_RAM_SIZE); + uvm_physseg_init(); uvm_page_physload( kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), d1228 1 a1228 1 +++ sys/arch/ews4800mips/ews4800mips/machdep.c 22 Dec 2016 09:19:25 -0000 a1239 23 Index: sys/arch/hp300/hp300/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hp300/hp300/machdep.c,v retrieving revision 1.229 diff -u -r1.229 machdep.c --- sys/arch/hp300/hp300/machdep.c 20 Apr 2014 04:12:54 -0000 1.229 +++ sys/arch/hp300/hp300/machdep.c 22 Dec 2016 09:19:27 -0000 @@@@ -100,6 +100,7 @@@@ #define MAXMEM 64*1024 /* XXX - from cmap.h */ #include +#include #include @@@@ -197,6 +198,7 @@@@ * Tell the VM system about available physical memory. The * hp300 only has one segment. */ + uvm_physseg_init(); uvm_page_physload(atop(avail_start), atop(avail_end), atop(avail_start), atop(avail_end), VM_FREELIST_DEFAULT); d1246 1 a1246 1 +++ sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c 22 Dec 2016 09:19:29 -0000 d1262 1 a1262 1 +++ sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c 22 Dec 2016 09:19:29 -0000 d1278 1 a1278 1 +++ sys/arch/hpcmips/hpcmips/machdep.c 22 Dec 2016 09:19:31 -0000 a1287 23 Index: sys/arch/hpcsh/hpcsh/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hpcsh/hpcsh/machdep.c,v retrieving revision 1.77 diff -u -r1.77 machdep.c --- sys/arch/hpcsh/hpcsh/machdep.c 24 Mar 2014 20:06:32 -0000 1.77 +++ sys/arch/hpcsh/hpcsh/machdep.c 22 Dec 2016 09:19:33 -0000 @@@@ -56,6 +56,7 @@@@ #include #include +#include #include /* mfs_initminiroot() */ @@@@ -281,6 +282,7 @@@@ #endif /* Find memory cluster. and load to UVM */ + uvm_physseg_init(); physmem = mem_cluster_init(SH3_P1SEG_TO_PHYS(kernend)); _DPRINTF("total memory = %dMbyte\n", (int)(sh3_ptob(physmem) >> 20)); mem_cluster_load(); d1294 1 a1294 1 +++ sys/arch/hppa/hppa/pmap.c 22 Dec 2016 09:19:34 -0000 a1305 15 Index: sys/arch/i386/conf/GENERIC =================================================================== RCS file: /cvsroot/src/sys/arch/i386/conf/GENERIC,v retrieving revision 1.1145 diff -u -r1.1145 GENERIC --- sys/arch/i386/conf/GENERIC 13 Dec 2016 20:42:18 -0000 1.1145 +++ sys/arch/i386/conf/GENERIC 22 Dec 2016 09:19:36 -0000 @@@@ -71,6 +71,7 @@@@ # and can deal with holes in the memory layout. #options PHYSMEM_MAX_SIZE=64 # max size of physical memory (in MB) #options PHYSMEM_MAX_ADDR=2048 # don't use memory above this (in MB) +#options UVM_HOTPLUG # Experimental uvm_hotplug(9) api. # Standard system options d1312 1 a1312 1 +++ sys/arch/i386/i386/machdep.c 22 Dec 2016 09:19:36 -0000 d1410 1 a1410 1 +++ sys/arch/ia64/ia64/machdep.c 22 Dec 2016 09:19:39 -0000 d1456 1 a1456 1 +++ sys/arch/ia64/ia64/pmap.c 22 Dec 2016 09:19:39 -0000 d1599 1 a1599 1 +++ sys/arch/iyonix/iyonix/iyonix_machdep.c 22 Dec 2016 09:19:40 -0000 a1608 46 Index: sys/arch/landisk/landisk/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/landisk/landisk/machdep.c,v retrieving revision 1.20 diff -u -r1.20 machdep.c --- sys/arch/landisk/landisk/machdep.c 17 Dec 2016 01:32:22 -0000 1.20 +++ sys/arch/landisk/landisk/machdep.c 22 Dec 2016 09:19:41 -0000 @@@@ -89,6 +89,7 @@@@ #include #include +#include #include /* mfs_initminiroot() */ #include @@@@ -218,6 +219,7 @@@@ /* Load memory to UVM */ physmem = atop(IOM_RAM_SIZE); kernend = atop(round_page(SH3_P1SEG_TO_PHYS(kernend))); + uvm_physseg_init(); uvm_page_physload( physmem, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), Index: sys/arch/luna68k/luna68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/luna68k/luna68k/machdep.c,v retrieving revision 1.99 diff -u -r1.99 machdep.c --- sys/arch/luna68k/luna68k/machdep.c 21 Aug 2015 10:48:06 -0000 1.99 +++ sys/arch/luna68k/luna68k/machdep.c 22 Dec 2016 09:19:41 -0000 @@@@ -73,6 +73,7 @@@@ #include #include +#include #include @@@@ -175,6 +176,7 @@@@ * Tell the VM system about available physical memory. The * luna68k only has one segment. */ + uvm_physseg_init(); uvm_page_physload(atop(avail_start), atop(avail_end), atop(avail_start), atop(avail_end), VM_FREELIST_DEFAULT); d1615 1 a1615 1 +++ sys/arch/luna68k/luna68k/pmap_bootstrap.c 22 Dec 2016 09:19:41 -0000 d1632 1 a1632 1 +++ sys/arch/m68k/m68k/pmap_motorola.c 22 Dec 2016 09:19:43 -0000 a1728 23 Index: sys/arch/mac68k/mac68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mac68k/mac68k/machdep.c,v retrieving revision 1.349 diff -u -r1.349 machdep.c --- sys/arch/mac68k/mac68k/machdep.c 30 Aug 2015 01:46:03 -0000 1.349 +++ sys/arch/mac68k/mac68k/machdep.c 22 Dec 2016 09:19:45 -0000 @@@@ -136,6 +136,7 @@@@ #define MAXMEM 64*1024 /* XXX - from cmap.h */ #include +#include #include @@@@ -253,6 +254,7 @@@@ * Notice that we don't need to worry about avail_end here * since it's equal to high[numranges-1]. */ + uvm_physseg_init(); for (i = 0; i < numranges; i++) { if (low[i] <= avail_start && avail_start < high[i]) uvm_page_physload(atop(avail_start), atop(high[i]), d1735 1 a1735 1 +++ sys/arch/mips/include/pmap.h 22 Dec 2016 09:19:51 -0000 a1753 14 Index: sys/arch/mips/ingenic/jzfb_regs.h =================================================================== RCS file: /cvsroot/src/sys/arch/mips/ingenic/jzfb_regs.h,v retrieving revision 1.1 diff -u -r1.1 jzfb_regs.h --- sys/arch/mips/ingenic/jzfb_regs.h 7 Apr 2016 01:00:05 -0000 1.1 +++ sys/arch/mips/ingenic/jzfb_regs.h 22 Dec 2016 09:19:51 -0000 @@@@ -86,4 +86,4 @@@@ #define JZ_LCDENH_GAMMA 0x0800 #define JZ_LCDENH_VEE 0x1000 -#endif /* JZFB_REGS_H */ \ No newline at end of file +#endif /* JZFB_REGS_H */ d1760 1 a1760 1 +++ sys/arch/mips/mips/mips_machdep.c 22 Dec 2016 09:19:52 -0000 d1827 1 a1827 1 +++ sys/arch/mips/mips/pmap_machdep.c 22 Dec 2016 09:19:52 -0000 d1870 1 a1870 1 +++ sys/arch/mipsco/mipsco/machdep.c 22 Dec 2016 09:19:54 -0000 a1884 46 Index: sys/arch/mmeye/mmeye/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mmeye/mmeye/machdep.c,v retrieving revision 1.57 diff -u -r1.57 machdep.c --- sys/arch/mmeye/mmeye/machdep.c 8 Nov 2013 02:24:53 -0000 1.57 +++ sys/arch/mmeye/mmeye/machdep.c 22 Dec 2016 09:19:55 -0000 @@@@ -85,6 +85,7 @@@@ #include #include +#include #include #include @@@@ -304,6 +305,7 @@@@ /* Load memory to UVM */ physmem = atop(IOM_RAM_SIZE); kernend = atop(round_page(SH3_P1SEG_TO_PHYS(kernend))); + uvm_physseg_init(); uvm_page_physload( kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), kernend, atop(IOM_RAM_BEGIN + IOM_RAM_SIZE), Index: sys/arch/mvme68k/mvme68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mvme68k/mvme68k/machdep.c,v retrieving revision 1.154 diff -u -r1.154 machdep.c --- sys/arch/mvme68k/mvme68k/machdep.c 31 May 2016 03:25:46 -0000 1.154 +++ sys/arch/mvme68k/mvme68k/machdep.c 22 Dec 2016 09:19:56 -0000 @@@@ -80,6 +80,7 @@@@ #endif #include +#include #include @@@@ -218,6 +219,7 @@@@ /* * Tell the VM system about available physical memory. */ + uvm_physseg_init(); for (i = 0; i < mem_cluster_cnt; i++) { if (phys_seg_list[i].ps_start == phys_seg_list[i].ps_end) { /* d1891 1 a1891 1 +++ sys/arch/netwinder/netwinder/netwinder_machdep.c 22 Dec 2016 09:19:56 -0000 a1911 23 Index: sys/arch/news68k/news68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/news68k/news68k/machdep.c,v retrieving revision 1.101 diff -u -r1.101 machdep.c --- sys/arch/news68k/news68k/machdep.c 24 Mar 2014 19:54:28 -0000 1.101 +++ sys/arch/news68k/news68k/machdep.c 22 Dec 2016 09:19:57 -0000 @@@@ -89,6 +89,7 @@@@ #define MAXMEM 64*1024 /* XXX - from cmap.h */ #include +#include #include @@@@ -164,6 +165,7 @@@@ * Tell the VM system about available physical memory. The * news68k only has one segment. */ + uvm_physseg_init(); uvm_page_physload(atop(avail_start), atop(avail_end), atop(avail_start), atop(avail_end), VM_FREELIST_DEFAULT); d1918 1 a1918 1 +++ sys/arch/newsmips/newsmips/machdep.c 22 Dec 2016 09:19:57 -0000 a1932 23 Index: sys/arch/next68k/next68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/next68k/next68k/machdep.c,v retrieving revision 1.111 diff -u -r1.111 machdep.c --- sys/arch/next68k/next68k/machdep.c 24 Mar 2014 20:01:03 -0000 1.111 +++ sys/arch/next68k/next68k/machdep.c 22 Dec 2016 09:19:58 -0000 @@@@ -77,6 +77,7 @@@@ #include #include +#include #ifdef DDB #include @@@@ -181,6 +182,7 @@@@ /* * Tell the VM system about available physical memory. */ + uvm_physseg_init(); for (i = 0; i < mem_cluster_cnt; i++) { if (phys_seg_list[i].ps_start == phys_seg_list[i].ps_end) { /* d1939 1 a1939 1 +++ sys/arch/playstation2/playstation2/machdep.c 22 Dec 2016 09:19:59 -0000 d1956 1 a1956 1 +++ sys/arch/pmax/pmax/machdep.c 22 Dec 2016 09:20:00 -0000 d1975 1 a1975 1 +++ sys/arch/powerpc/ibm4xx/ibm4xx_machdep.c 22 Dec 2016 09:20:01 -0000 d1991 1 a1991 1 +++ sys/arch/powerpc/ibm4xx/pmap.c 22 Dec 2016 09:20:01 -0000 d2025 1 a2025 1 +++ sys/arch/powerpc/isa/isadma_machdep.c 22 Dec 2016 09:20:03 -0000 d2062 1 a2062 1 +++ sys/arch/powerpc/oea/ofwoea_machdep.c 22 Dec 2016 09:20:04 -0000 d2078 1 a2078 1 +++ sys/arch/powerpc/oea/pmap.c 22 Dec 2016 09:20:04 -0000 d2196 1 a2196 1 +++ sys/arch/powerpc/oea/prep_machdep.c 22 Dec 2016 09:20:04 -0000 d2212 1 a2212 1 +++ sys/arch/powerpc/powerpc/bus_dma.c 22 Dec 2016 09:20:04 -0000 d2249 1 a2249 1 +++ sys/arch/rs6000/rs6000/machdep.c 22 Dec 2016 09:20:07 -0000 d2265 1 a2265 1 +++ sys/arch/sandpoint/sandpoint/machdep.c 22 Dec 2016 09:20:07 -0000 d2282 1 a2282 1 +++ sys/arch/sbmips/sbmips/machdep.c 22 Dec 2016 09:20:08 -0000 d2298 1 a2298 1 +++ sys/arch/sgimips/sgimips/machdep.c 22 Dec 2016 09:20:10 -0000 d2314 1 a2314 1 +++ sys/arch/sh3/sh3/pmap.c 22 Dec 2016 09:20:11 -0000 d2390 1 a2390 1 +++ sys/arch/sh3/sh3/sh3_machdep.c 22 Dec 2016 09:20:11 -0000 d2408 1 a2408 1 +++ sys/arch/sh3/sh3/vm_machdep.c 22 Dec 2016 09:20:11 -0000 d2432 1 a2432 1 +++ sys/arch/shark/ofw/ofw.c 22 Dec 2016 09:20:11 -0000 d2449 1 a2449 1 +++ sys/arch/sparc/sparc/pmap.c 22 Dec 2016 09:20:17 -0000 d2465 1 a2465 1 +++ sys/arch/sparc64/sparc64/pmap.c 22 Dec 2016 09:20:20 -0000 d2483 1 a2483 1 +++ sys/arch/sun2/sun2/pmap.c 22 Dec 2016 09:20:22 -0000 d2499 1 a2499 1 +++ sys/arch/sun3/sun3/pmap.c 22 Dec 2016 09:20:24 -0000 d2515 1 a2515 1 +++ sys/arch/sun3/sun3x/pmap.c 22 Dec 2016 09:20:24 -0000 d2533 1 a2533 1 +++ sys/arch/usermode/usermode/machdep.c 22 Dec 2016 09:20:27 -0000 a2542 24 Index: sys/arch/usermode/usermode/pmap.c =================================================================== RCS file: /cvsroot/src/sys/arch/usermode/usermode/pmap.c,v retrieving revision 1.106 diff -u -r1.106 pmap.c --- sys/arch/usermode/usermode/pmap.c 7 Jul 2016 06:55:39 -0000 1.106 +++ sys/arch/usermode/usermode/pmap.c 22 Dec 2016 09:20:27 -0000 @@@@ -45,6 +45,7 @@@@ #include #include +#include struct pv_entry { struct pv_entry *pv_next; @@@@ -409,6 +410,8 @@@@ } thunk_printf_debug("kernel pmap entries mem added to the kernel pmap\n"); + uvm_physseg_init(); + /* add file space to uvm's FREELIST */ uvm_page_physload(atop(0), atop(free_end), d2549 1 a2549 1 +++ sys/arch/vax/vax/ka650.c 22 Dec 2016 09:20:28 -0000 d2565 1 a2565 1 +++ sys/arch/vax/vax/pmap.c 22 Dec 2016 09:20:28 -0000 d2583 1 a2583 9 @@@@ -446,6 +447,7 @@@@ /* * Now everything should be complete, start virtual memory. */ + uvm_physseg_init(); uvm_page_physload(avail_start >> PGSHIFT, avail_end >> PGSHIFT, avail_start >> PGSHIFT, avail_end >> PGSHIFT, VM_FREELIST_DEFAULT); @@@@ -475,7 +477,8 @@@@ d2593 1 a2593 1 @@@@ -490,10 +493,10 @@@@ d2613 1 a2613 1 +++ sys/arch/x68k/x68k/machdep.c 22 Dec 2016 09:20:32 -0000 d2622 1 a2622 10 @@@@ -184,6 +185,8 @@@@ paddr_t msgbuf_pa; paddr_t s, e; + uvm_physseg_init(); + /* * Most m68k ports allocate msgbuf at the end of available memory * (i.e. just after avail_end), but on x68k we allocate msgbuf @@@@ -553,10 +556,7 @@@@ d2634 1 a2634 1 @@@@ -605,20 +605,25 @@@@ d2673 1 a2673 1 @@@@ -1249,11 +1254,14 @@@@ d2698 1 a2698 1 +++ sys/arch/x68k/x68k/pmap_bootstrap.c 22 Dec 2016 09:20:32 -0000 a2708 99 Index: sys/arch/x86/x86/x86_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/x86/x86/x86_machdep.c,v retrieving revision 1.79 diff -u -r1.79 x86_machdep.c --- sys/arch/x86/x86/x86_machdep.c 20 Dec 2016 14:03:15 -0000 1.79 +++ sys/arch/x86/x86/x86_machdep.c 22 Dec 2016 09:20:37 -0000 @@@@ -67,6 +67,7 @@@@ #include #include +#include #include "acpica.h" #if NACPICA > 0 Index: sys/arch/xen/xen/balloon.c =================================================================== RCS file: /cvsroot/src/sys/arch/xen/xen/balloon.c,v retrieving revision 1.17 diff -u -r1.17 balloon.c --- sys/arch/xen/xen/balloon.c 7 Jul 2016 06:55:40 -0000 1.17 +++ sys/arch/xen/xen/balloon.c 22 Dec 2016 09:20:39 -0000 @@@@ -70,6 +70,10 @@@@ #define BALLOONDEBUG 0 +#if defined(_KERNEL_OPT) +#include "opt_uvm_hotplug.h" +#endif + #include __KERNEL_RCSID(0, "$NetBSD: balloon.c,v 1.17 2016/07/07 06:55:40 msaitoh Exp $"); @@@@ -93,6 +97,7 @@@@ #include #include +#include #include #include "locators.h" @@@@ -454,6 +459,7 @@@@ memset(mfn_list, 0, BALLOON_DELTA * sizeof(*mfn_list)); +#ifndef UVM_HOTPLUG /* * If the list is empty, we are deflating balloon beyond empty. This * is currently unsupported as this would require to dynamically add @@@@ -469,6 +475,7 @@@@ tpages, sc->balloon_num_page_entries); tpages = sc->balloon_num_page_entries; } +#endif /* reclaim pages from balloon */ set_xen_guest_handle(reservation.extent_start, mfn_list); @@@@ -491,8 +498,31 @@@@ /* plug pages back into memory through bpge entries */ for (rpages = 0; rpages < ret; rpages++) { - -#ifdef noyet +#ifdef UVM_HOTPLUG + extern paddr_t pmap_pa_end; + if (sc->balloon_num_page_entries == 0) { /*XXX: consolidate */ + /* "hot-plug": Stick it at the end of memory */ + pa = pmap_pa_end; + + /* P2M update */ + s = splvm(); + pmap_pa_end += PAGE_SIZE; /* XXX: TLB flush ?*/ + xpmap_ptom_map(pa, ptoa(mfn_list[rpages])); + xpq_queue_machphys_update(ptoa(mfn_list[rpages]), pa); + splx(s); + + if (uvm_physseg_plug(atop(pa), 1, NULL) == false) { + /* Undo P2M */ + s = splvm(); + xpmap_ptom_unmap(pa); + xpq_queue_machphys_update(ptoa(mfn_list[rpages]), 0); + pmap_pa_end -= PAGE_SIZE; /* XXX: TLB flush ?*/ + splx(s); + break; + } + continue; + } +#else if (sc->balloon_num_page_entries == 0) { /* * XXX This is the case where extra "hot-plug" @@@@ -503,7 +533,6 @@@@ break; } #endif - bpg_entry = SLIST_FIRST(&balloon_sc->balloon_page_entries); SLIST_REMOVE_HEAD(&balloon_sc->balloon_page_entries, entry); balloon_sc->balloon_num_page_entries--; d2715 1 a2715 1 +++ sys/arch/zaurus/zaurus/machdep.c 22 Dec 2016 09:20:41 -0000 a2724 42 Index: sys/dev/pci/voyagervar.h =================================================================== RCS file: /cvsroot/src/sys/dev/pci/voyagervar.h,v retrieving revision 1.4 diff -u -r1.4 voyagervar.h --- sys/dev/pci/voyagervar.h 7 Dec 2011 09:08:00 -0000 1.4 +++ sys/dev/pci/voyagervar.h 22 Dec 2016 09:22:23 -0000 @@@@ -65,4 +65,4 @@@@ /* frequency in Hz, duty cycle in 1000ths */ uint32_t voyager_set_pwm(int, int); -#endif \ No newline at end of file +#endif Index: sys/external/bsd/compiler_rt/dist/test/Unit/ppc/fixtfdi_test.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/compiler_rt/dist/test/Unit/ppc/fixtfdi_test.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 fixtfdi_test.c --- sys/external/bsd/compiler_rt/dist/test/Unit/ppc/fixtfdi_test.c 4 Jul 2013 22:09:51 -0000 1.1.1.1 +++ sys/external/bsd/compiler_rt/dist/test/Unit/ppc/fixtfdi_test.c 22 Dec 2016 09:23:28 -0000 @@@@ -474,4 +474,4 @@@@ } return 0; -} \ No newline at end of file +} Index: sys/external/bsd/compiler_rt/dist/test/builtins/Unit/ppc/fixtfdi_test.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/compiler_rt/dist/test/builtins/Unit/ppc/fixtfdi_test.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 fixtfdi_test.c --- sys/external/bsd/compiler_rt/dist/test/builtins/Unit/ppc/fixtfdi_test.c 26 Feb 2014 22:31:34 -0000 1.1.1.1 +++ sys/external/bsd/compiler_rt/dist/test/builtins/Unit/ppc/fixtfdi_test.c 22 Dec 2016 09:23:45 -0000 @@@@ -474,4 +474,4 @@@@ } return 0; -} \ No newline at end of file +} d2731 1 a2731 1 +++ sys/rump/librump/rumpkern/emul.c 22 Dec 2016 09:25:17 -0000 d2747 1 a2747 1 +++ sys/sys/systm.h 22 Dec 2016 09:25:21 -0000 d2763 1 a2763 1 +++ sys/uvm/Makefile 22 Dec 2016 09:25:28 -0000 d2779 1 a2779 1 +++ sys/uvm/files.uvm 22 Dec 2016 09:25:28 -0000 d2802 1 a2802 1 +++ sys/uvm/uvm.h 22 Dec 2016 09:25:28 -0000 d2817 1 a2817 1 +++ sys/uvm/uvm_extern.h 22 Dec 2016 09:25:28 -0000 d2857 1 a2857 1 +++ sys/uvm/uvm_init.c 22 Dec 2016 09:25:28 -0000 d2893 1 a2893 1 +++ sys/uvm/uvm_page.c 22 Dec 2016 09:25:29 -0000 d3471 1 a3471 1 +++ sys/uvm/uvm_page.h 22 Dec 2016 09:25:29 -0000 d3540 1 a3540 1 +++ sys/uvm/uvm_pglist.c 22 Dec 2016 09:25:29 -0000 d3867 1 a3867 1 +++ sys/uvm/pmap/pmap.c 22 Dec 2016 09:25:29 -0000 @ 1.1 log @Initial revision @ text @d7 1 a7 1 +++ share/man/man9/Makefile 19 Dec 2016 13:12:06 -0000 d25 1 a25 1 +++ sys/arch/acorn26/acorn26/pmap.c 19 Dec 2016 13:12:06 -0000 d42 1 a42 1 + uvm_physseg_valid(bank); d64 3 a66 10 +++ sys/arch/acorn26/acorn26/start.c 19 Dec 2016 13:12:06 -0000 @@@@ -53,6 +53,7 @@@@ #include #include +#include #include "arcvideo.h" #include "ioc.h" @@@@ -126,6 +127,7 @@@@ d69 2 a70 2 uvm_setpagesize(); + uvm_physseg_init(); d80 3 a82 2 +++ sys/arch/acorn32/acorn32/rpc_machdep.c 19 Dec 2016 13:12:06 -0000 @@@@ -925,6 +925,8 @@@@ d85 2 a86 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d97 3 a99 10 +++ sys/arch/acorn32/eb7500atx/eb7500atx_machdep.c 19 Dec 2016 13:12:06 -0000 @@@@ -82,6 +82,7 @@@@ #include #include +#include #include #include @@@@ -863,6 +864,8 @@@@ d102 2 a103 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d108 16 d130 2 a131 10 +++ sys/arch/alpha/alpha/machdep.c 19 Dec 2016 13:12:06 -0000 @@@@ -104,6 +104,7 @@@@ #include #include +#include #include #include @@@@ -227,7 +228,6 @@@@ d139 2 a140 1 @@@@ -373,7 +373,8 @@@@ d143 1 a143 1 uvm_setpagesize(); d145 1 a145 1 + uvm_physseg_init(); d150 1 a150 1 @@@@ -611,23 +612,24 @@@@ d191 1 a191 1 +++ sys/arch/alpha/alpha/pmap.c 19 Dec 2016 13:12:06 -0000 d224 1 a224 1 + uvm_physseg_valid(bank); d283 5 a287 5 retrieving revision 1.239 diff -u -r1.239 machdep.c --- sys/arch/amd64/amd64/machdep.c 16 Dec 2016 20:16:50 -0000 1.239 +++ sys/arch/amd64/amd64/machdep.c 19 Dec 2016 13:12:08 -0000 @@@@ -788,6 +788,7 @@@@ d295 1 a295 1 @@@@ -804,10 +805,25 @@@@ d302 1 a302 1 + uvm_physseg_valid(upm); d307 1 a307 1 + if (uvm_physseg_valid(upm) == false) d324 1 a324 1 @@@@ -1451,57 +1467,30 @@@@ d401 8 a408 4 @@@@ -1581,7 +1570,8 @@@@ * Initialize PAGE_SIZE-dependent variables. */ uvm_setpagesize(); d410 1 a410 2 + uvm_physseg_init(); + d413 16 a428 1 #ifndef XEN d435 3 a437 10 +++ sys/arch/amiga/amiga/pmap_bootstrap.c 19 Dec 2016 13:12:09 -0000 @@@@ -73,6 +73,7 @@@@ #include #include +#include #include #include @@@@ -126,7 +127,8 @@@@ d440 1 a440 1 uvm_setpagesize(); d442 1 a442 1 + uvm_physseg_init(); d447 19 d472 9 a480 13 +++ sys/arch/arc/arc/machdep.c 19 Dec 2016 13:12:11 -0000 @@@@ -63,6 +63,7 @@@@ #include #include #include +#include #include #include #include @@@@ -310,7 +311,8 @@@@ * Set the VM page size. */ uvm_setpagesize(); d482 1 a482 1 + uvm_physseg_init(); d493 3 a495 10 +++ sys/arch/arm/arm32/arm32_boot.c 19 Dec 2016 13:12:12 -0000 @@@@ -137,6 +137,7 @@@@ #include #include +#include #include #include @@@@ -232,7 +233,8 @@@@ d498 1 a498 1 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ d500 1 a500 1 + uvm_physseg_init(); d511 1 a511 1 +++ sys/arch/arm/arm32/bus_dma.c 19 Dec 2016 13:12:12 -0000 d519 1 a519 1 + KASSERT(uvm_physseg_valid(upm)); d533 1 a533 1 +++ sys/arch/arm/arm32/pmap.c 19 Dec 2016 13:12:14 -0000 d551 3 a553 10 +++ sys/arch/arm/at91/at91bus.c 19 Dec 2016 13:12:14 -0000 @@@@ -58,6 +58,7 @@@@ #include #include +#include #include @@@@ -512,6 +513,7 @@@@ d556 2 a557 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d561 14 d581 3 a583 10 +++ sys/arch/atari/atari/pmap_bootstrap.c 19 Dec 2016 13:12:14 -0000 @@@@ -71,6 +71,7 @@@@ #include #include +#include #include #include @@@@ -109,7 +110,8 @@@@ d586 1 a586 1 uvm_setpagesize(); d588 1 a588 1 + uvm_physseg_init(); d599 1 a599 1 +++ sys/arch/cesfic/cesfic/machdep.c 19 Dec 2016 13:12:15 -0000 d631 3 a633 10 +++ sys/arch/cobalt/cobalt/machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -70,6 +70,7 @@@@ #include #include +#include #include @@@@ -253,7 +254,8 @@@@ d636 1 a636 1 uvm_setpagesize(); d638 1 a638 1 + uvm_physseg_init(); d649 2 a650 2 +++ sys/arch/dreamcast/dreamcast/machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -103,6 +103,8 @@@@ a653 1 +#include d658 1 a658 1 @@@@ -130,6 +132,7 @@@@ d662 1 a662 1 + uvm_physseg_init(); d672 1 a672 1 +++ sys/arch/emips/emips/machdep.c 19 Dec 2016 13:12:15 -0000 d681 12 d699 3 a701 10 +++ sys/arch/epoc32/epoc32/machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -49,6 +49,7 @@@@ #include #include +#include #include #include @@@@ -441,6 +442,7 @@@@ d704 2 a705 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d715 3 a717 10 +++ sys/arch/evbarm/adi_brh/brh_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -92,6 +92,7 @@@@ #include #include +#include #include @@@@ -758,6 +759,7 @@@@ d720 2 a721 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d731 3 a733 10 +++ sys/arch/evbarm/armadillo/armadillo9_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -133,6 +133,7 @@@@ #include #include +#include #include @@@@ -814,6 +815,7 @@@@ d736 2 a737 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d747 3 a749 10 +++ sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -128,6 +128,7 @@@@ #include #include +#include #include #include @@@@ -829,6 +830,7 @@@@ d752 2 a753 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d763 3 a765 10 +++ sys/arch/evbarm/gemini/gemini_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -156,6 +156,7 @@@@ #include #include +#include #include #include @@@@ -708,7 +709,8 @@@@ d768 1 a768 1 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ d770 1 a770 1 + uvm_physseg_init(); d781 3 a783 10 +++ sys/arch/evbarm/hdl_g/hdlg_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -93,6 +93,7 @@@@ #include #include +#include #include @@@@ -596,6 +597,7 @@@@ d786 2 a787 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d797 2 a798 6 +++ sys/arch/evbarm/imx31/imx31lk_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -133,6 +133,7 @@@@ #include #include +#include a799 3 #include #include @@@@ -693,6 +694,7 @@@@ d802 2 a803 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d813 3 a815 10 +++ sys/arch/evbarm/iq80310/iq80310_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -92,6 +92,7 @@@@ #include #include +#include #include @@@@ -718,6 +719,7 @@@@ d818 2 a819 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d829 3 a831 10 +++ sys/arch/evbarm/iq80321/iq80321_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -93,6 +93,7 @@@@ #include #include +#include #include @@@@ -743,6 +744,7 @@@@ d834 2 a835 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d845 3 a847 10 +++ sys/arch/evbarm/ixdp425/ixdp425_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -84,6 +84,7 @@@@ #include #include +#include #include @@@@ -710,6 +711,7 @@@@ d850 2 a851 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d861 3 a863 10 +++ sys/arch/evbarm/ixm1200/ixm1200_machdep.c 19 Dec 2016 13:12:15 -0000 @@@@ -81,6 +81,7 @@@@ #include #include +#include #include @@@@ -677,6 +678,7 @@@@ d866 2 a867 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d877 3 a879 2 +++ sys/arch/evbarm/lubbock/lubbock_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -900,6 +900,7 @@@@ d882 2 a883 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d893 3 a895 10 +++ sys/arch/evbarm/mini2440/mini2440_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -155,6 +155,7 @@@@ #include #include +#include #include #include @@@@ -887,6 +888,7 @@@@ d898 2 a899 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d909 3 a911 10 +++ sys/arch/evbarm/npwr_fc/npwr_fc_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -91,6 +91,7 @@@@ #include #include +#include #include @@@@ -713,6 +714,7 @@@@ d914 2 a915 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d925 3 a927 10 +++ sys/arch/evbarm/nslu2/nslu2_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -114,6 +114,7 @@@@ #include #include +#include #include @@@@ -778,6 +779,7 @@@@ d930 2 a931 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d941 3 a943 10 +++ sys/arch/evbarm/osk5912/osk5912_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -122,6 +122,7 @@@@ #include #include +#include #include #include @@@@ -448,6 +449,7 @@@@ d946 2 a947 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d957 3 a959 10 +++ sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -127,6 +127,7 @@@@ #include #include +#include #include #include @@@@ -845,6 +846,7 @@@@ d962 2 a963 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d973 3 a975 10 +++ sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -129,6 +129,7 @@@@ #include #include +#include #include #include @@@@ -762,6 +763,7 @@@@ d978 2 a979 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d989 3 a991 10 +++ sys/arch/evbarm/tisdp24xx/sdp24xx_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -149,6 +149,7 @@@@ #include #include +#include #include #include @@@@ -542,6 +543,7 @@@@ d994 2 a995 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1005 3 a1007 10 +++ sys/arch/evbarm/tsarm/tsarm_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -93,6 +93,7 @@@@ #include #include +#include #include @@@@ -727,6 +728,7 @@@@ d1010 2 a1011 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1021 2 a1022 6 +++ sys/arch/evbarm/viper/viper_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -135,6 +135,7 @@@@ #include #include +#include a1023 3 #include #include @@@@ -747,6 +748,7 @@@@ d1026 2 a1027 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1031 250 d1287 1 a1287 1 +++ sys/arch/evbsh3/evbsh3/machdep.c 19 Dec 2016 13:12:16 -0000 d1310 2 a1311 3 +++ sys/arch/ews4800mips/ews4800mips/machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -44,6 +44,7 @@@@ #include a1312 6 #include +#include #include #include @@@@ -111,7 +112,8 @@@@ d1315 1 a1315 1 uvm_setpagesize(); d1317 1 a1317 1 + uvm_physseg_init(); d1328 1 a1328 1 +++ sys/arch/hp300/hp300/machdep.c 19 Dec 2016 13:12:16 -0000 d1351 2 a1352 2 +++ sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -72,6 +72,7 @@@@ a1354 7 #include +#include #include #include @@@@ -609,6 +610,7 @@@@ d1356 2 a1357 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1367 2 a1368 2 +++ sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -75,6 +75,7 @@@@ a1370 7 #include +#include #include #include @@@@ -538,6 +539,7 @@@@ d1372 2 a1373 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1377 16 d1399 1 a1399 1 +++ sys/arch/hpcsh/hpcsh/machdep.c 19 Dec 2016 13:12:16 -0000 d1422 2 a1423 6 +++ sys/arch/hppa/hppa/pmap.c 19 Dec 2016 13:12:16 -0000 @@@@ -76,6 +76,7 @@@@ #include #include +#include a1424 3 #include #include @@@@ -676,7 +677,8 @@@@ d1427 1 a1427 1 uvm_setpagesize(); d1429 1 a1429 1 + uvm_physseg_init(); d1434 15 d1452 5 a1456 5 retrieving revision 1.769 diff -u -r1.769 machdep.c --- sys/arch/i386/i386/machdep.c 17 Dec 2016 14:27:53 -0000 1.769 +++ sys/arch/i386/i386/machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -1036,57 +1036,30 @@@@ d1533 8 a1540 4 @@@@ -1191,7 +1164,8 @@@@ * Initialize PAGE_SIZE-dependent variables. */ uvm_setpagesize(); d1542 1 a1542 1 + uvm_physseg_init(); d1553 2 a1554 10 +++ sys/arch/ia64/ia64/machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -115,6 +115,7 @@@@ #include #include +#include #include #include @@@@ -175,18 +176,19 @@@@ d1570 1 a1570 1 + uvm_physseg_valid(upm); d1583 2 a1584 1 @@@@ -466,7 +468,8 @@@@ d1587 1 a1587 1 uvm_setpagesize(); d1589 1 a1589 2 + uvm_physseg_init(); + d1599 1 a1599 1 +++ sys/arch/ia64/ia64/pmap.c 19 Dec 2016 13:12:16 -0000 d1623 1 a1623 1 + uvm_physseg_valid(upm); d1683 1 a1683 1 + uvm_physseg_valid(upm); d1742 3 a1744 10 +++ sys/arch/iyonix/iyonix/iyonix_machdep.c 19 Dec 2016 13:12:16 -0000 @@@@ -93,6 +93,7 @@@@ #include #include +#include #include @@@@ -781,6 +782,7 @@@@ d1747 2 a1748 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d1758 1 a1758 1 +++ sys/arch/landisk/landisk/machdep.c 19 Dec 2016 13:12:16 -0000 d1781 1 a1781 1 +++ sys/arch/luna68k/luna68k/machdep.c 19 Dec 2016 13:12:16 -0000 d1804 1 a1804 1 +++ sys/arch/luna68k/luna68k/pmap_bootstrap.c 19 Dec 2016 13:12:16 -0000 d1821 1 a1821 1 +++ sys/arch/m68k/m68k/pmap_motorola.c 19 Dec 2016 13:12:17 -0000 d1846 9 d1871 1 a1871 1 + uvm_physseg_valid(bank); d1885 1 a1885 1 + uvm_physseg_valid(bank); d1911 1 a1911 1 + uvm_physseg_valid(bank); d1924 1 a1924 1 +++ sys/arch/mac68k/mac68k/machdep.c 19 Dec 2016 13:12:17 -0000 d1947 1 a1947 1 +++ sys/arch/mips/include/pmap.h 19 Dec 2016 13:12:17 -0000 d1966 14 d1986 1 a1986 1 +++ sys/arch/mips/mips/mips_machdep.c 19 Dec 2016 13:12:18 -0000 d2008 1 a2008 1 + for (; uvm_physseg_valid(bank); bank = uvm_physseg_get_prev(bank)) { d2053 1 a2053 1 +++ sys/arch/mips/mips/pmap_machdep.c 19 Dec 2016 13:12:19 -0000 d2096 4 a2099 3 +++ sys/arch/mipsco/mipsco/machdep.c 19 Dec 2016 13:12:19 -0000 @@@@ -65,6 +65,7 @@@@ #include d2101 4 a2104 9 #include +#include #include /* mfs_initminiroot() */ @@@@ -215,7 +216,8 @@@@ * Set the VM page size. */ uvm_setpagesize(); d2106 1 a2106 1 + uvm_physseg_init(); d2117 1 a2117 1 +++ sys/arch/mmeye/mmeye/machdep.c 19 Dec 2016 13:12:19 -0000 d2140 1 a2140 1 +++ sys/arch/mvme68k/mvme68k/machdep.c 19 Dec 2016 13:12:20 -0000 d2163 2 a2164 10 +++ sys/arch/netwinder/netwinder/netwinder_machdep.c 19 Dec 2016 13:12:22 -0000 @@@@ -69,6 +69,7 @@@@ #include #include +#include #include @@@@ -477,7 +478,7 @@@@ d2173 2 a2174 1 @@@@ -739,7 +740,7 @@@@ d2177 1 a2177 1 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ d2179 2 a2180 1 + uvm_physseg_init(); d2190 1 a2190 1 +++ sys/arch/news68k/news68k/machdep.c 19 Dec 2016 13:12:24 -0000 d2213 4 a2216 3 +++ sys/arch/newsmips/newsmips/machdep.c 19 Dec 2016 13:12:25 -0000 @@@@ -72,6 +72,7 @@@@ #include d2218 4 a2221 9 #include +#include #include /* mfs_initminiroot() */ @@@@ -244,7 +245,8 @@@@ * Set the VM page size. */ uvm_setpagesize(); d2223 1 a2223 1 + uvm_physseg_init(); d2234 1 a2234 1 +++ sys/arch/next68k/next68k/machdep.c 19 Dec 2016 13:12:26 -0000 d2257 3 a2259 10 +++ sys/arch/playstation2/playstation2/machdep.c 19 Dec 2016 13:12:26 -0000 @@@@ -44,6 +44,7 @@@@ #include #include +#include #ifdef DDB #include @@@@ -115,6 +116,8 @@@@ d2262 3 a2264 3 uvm_setpagesize(); + uvm_physseg_init(); + d2268 35 d2309 2 a2310 10 +++ sys/arch/powerpc/ibm4xx/pmap.c 19 Dec 2016 13:12:26 -0000 @@@@ -79,6 +79,7 @@@@ #include #include +#include #include #include @@@@ -199,7 +200,7 @@@@ d2319 1 a2319 1 @@@@ -210,7 +211,7 @@@@ d2328 2 a2329 1 @@@@ -295,7 +296,8 @@@@ d2332 3 a2334 4 uvm_setpagesize(); - + uvm_physseg_init(); + a2336 1 */ d2343 1 a2343 1 +++ sys/arch/powerpc/isa/isadma_machdep.c 19 Dec 2016 13:12:26 -0000 d2352 1 a2352 1 + uvm_physseg_valid(bank); d2367 1 a2367 1 + uvm_physseg_valid(bank); d2374 16 d2396 1 a2396 1 +++ sys/arch/powerpc/oea/pmap.c 19 Dec 2016 13:12:26 -0000 d2429 1 a2429 1 + uvm_physseg_valid(bank); d2477 1 a2477 1 + uvm_physseg_valid(bank); d2493 1 a2493 1 + uvm_physseg_valid(bank); d2508 16 d2530 1 a2530 1 +++ sys/arch/powerpc/powerpc/bus_dma.c 19 Dec 2016 13:12:26 -0000 d2552 1 a2552 1 + uvm_physseg_valid(bank); d2561 65 d2632 1 a2632 1 +++ sys/arch/sh3/sh3/pmap.c 19 Dec 2016 13:12:26 -0000 d2673 1 a2673 1 + uvm_physseg_valid(bank); d2694 1 a2694 1 + KDASSERT(uvm_physseg_valid(bank)); d2702 18 d2726 1 a2726 1 +++ sys/arch/sh3/sh3/vm_machdep.c 19 Dec 2016 13:12:26 -0000 d2750 4 a2753 8 +++ sys/arch/shark/ofw/ofw.c 19 Dec 2016 13:12:26 -0000 @@@@ -53,6 +53,7 @@@@ #include #include +#include #include d2755 3 a2757 1 @@@@ -873,7 +874,8 @@@@ a2758 5 /* Load memory into UVM. */ uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ - + uvm_physseg_init(); + a2760 1 paddr_t start = (paddr_t)bootconfig.dram[i].address; d2767 3 a2769 3 +++ sys/arch/sparc/sparc/pmap.c 19 Dec 2016 13:12:26 -0000 @@@@ -77,6 +77,7 @@@@ #include /* for MID_* */ d2771 3 a2773 6 #include +#include #include #include @@@@ -3036,7 +3037,8 @@@@ a2774 5 uvmexp.pagesize = NBPG; uvm_setpagesize(); - + uvm_physseg_init(); + a2776 1 nptesg = (NBPSG >> pgshift); d2783 3 a2785 10 +++ sys/arch/sparc64/sparc64/pmap.c 19 Dec 2016 13:12:26 -0000 @@@@ -52,6 +52,7 @@@@ #include #include +#include #include #include @@@@ -779,7 +780,8 @@@@ d2788 1 a2788 1 uvm_setpagesize(); d2790 1 a2790 1 + uvm_physseg_init(); d2801 3 a2803 3 +++ sys/arch/sun2/sun2/pmap.c 19 Dec 2016 13:12:26 -0000 @@@@ -97,6 +97,7 @@@@ #include d2805 3 a2807 2 #include +#include a2808 9 #include #include @@@@ -1701,7 +1702,8 @@@@ uvmexp.pagesize = NBPG; uvm_setpagesize(); - + uvm_physseg_init(); + a2810 1 pmap_common_init(kernel_pmap); d2817 3 a2819 3 +++ sys/arch/sun3/sun3/pmap.c 19 Dec 2016 13:12:27 -0000 @@@@ -95,6 +95,7 @@@@ #include d2821 3 a2823 6 #include +#include #include #include @@@@ -1731,7 +1732,8 @@@@ a2824 5 uvmexp.pagesize = PAGE_SIZE; uvm_setpagesize(); - + uvm_physseg_init(); + a2826 1 pmap_common_init(kernel_pmap); d2833 2 a2834 6 +++ sys/arch/sun3/sun3x/pmap.c 19 Dec 2016 13:12:27 -0000 @@@@ -120,6 +120,7 @@@@ #include #include +#include a2835 3 #include #include @@@@ -894,7 +895,8 @@@@ d2838 1 a2838 1 uvm_setpagesize(); d2840 1 a2840 1 + uvm_physseg_init(); d2845 16 d2867 1 a2867 1 +++ sys/arch/usermode/usermode/pmap.c 19 Dec 2016 13:12:27 -0000 d2891 1 a2891 1 +++ sys/arch/vax/vax/ka650.c 19 Dec 2016 13:12:27 -0000 d2907 1 a2907 1 +++ sys/arch/vax/vax/pmap.c 19 Dec 2016 13:12:27 -0000 d2916 9 d2963 1 a2963 1 +++ sys/arch/x68k/x68k/machdep.c 19 Dec 2016 13:12:27 -0000 d3014 2 a3015 2 + for (uvm_physseg_get_next(i); uvm_physseg_valid(i); i = uvm_physseg_get_next(i)) { + if (uvm_physseg_valid(i) == false) d3039 2 a3040 2 + for (i = uvm_physseg_get_first(); uvm_physseg_valid(i); i = uvm_physseg_get_next(i)) { + if (uvm_physseg_valid(i) == false) d3057 1 a3057 1 +++ sys/arch/x68k/x68k/pmap_bootstrap.c 19 Dec 2016 13:12:27 -0000 d3071 4 a3074 4 retrieving revision 1.77 diff -u -r1.77 x86_machdep.c --- sys/arch/x86/x86/x86_machdep.c 25 Nov 2016 11:57:36 -0000 1.77 +++ sys/arch/x86/x86/x86_machdep.c 19 Dec 2016 13:12:27 -0000 d3089 1 a3089 1 +++ sys/arch/xen/xen/balloon.c 19 Dec 2016 13:12:27 -0000 d3173 3 a3175 10 +++ sys/arch/zaurus/zaurus/machdep.c 19 Dec 2016 13:12:27 -0000 @@@@ -138,6 +138,7 @@@@ #include #include +#include #include @@@@ -1091,6 +1092,7 @@@@ d3178 2 a3179 2 uvm_setpagesize(); /* initialize PAGE_SIZE-dependent variables */ + uvm_physseg_init(); d3183 42 d3231 1 a3231 1 +++ sys/rump/librump/rumpkern/emul.c 19 Dec 2016 13:12:28 -0000 d3247 1 a3247 1 +++ sys/sys/systm.h 19 Dec 2016 13:12:28 -0000 d3263 1 a3263 1 +++ sys/uvm/Makefile 19 Dec 2016 13:12:28 -0000 d3279 1 a3279 1 +++ sys/uvm/files.uvm 19 Dec 2016 13:12:28 -0000 d3302 1 a3302 1 +++ sys/uvm/uvm.h 19 Dec 2016 13:12:28 -0000 d3317 25 a3341 2 +++ sys/uvm/uvm_extern.h 19 Dec 2016 13:12:28 -0000 @@@@ -708,9 +708,6 @@@@ d3351 36 d3393 1 a3393 1 +++ sys/uvm/uvm_page.c 19 Dec 2016 13:12:28 -0000 d3479 1 a3479 1 + uvm_physseg_valid(bank) ; d3496 1 a3496 1 + uvm_physseg_valid(bank); d3537 1 a3537 1 + for (lcv = uvm_physseg_get_last() ; uvm_physseg_valid(lcv) ; lcv = uvm_physseg_get_prev(lcv)) d3540 1 a3540 1 + for (lcv = uvm_physseg_get_first() ; uvm_physseg_valid(lcv) ; lcv = uvm_physseg_get_next(lcv)) d3597 1 a3597 1 + for (lcv = uvm_physseg_get_last() ; uvm_physseg_valid(lcv); lcv = uvm_physseg_get_prev(lcv)) d3600 1 a3600 1 + for (lcv = uvm_physseg_get_first() ; uvm_physseg_valid(lcv) ; lcv = uvm_physseg_get_next(lcv)) d3955 1 a3955 1 + uvm_physseg_valid(i); d3971 1 a3971 1 +++ sys/uvm/uvm_page.h 19 Dec 2016 13:12:28 -0000 d4040 1 a4040 1 +++ sys/uvm/uvm_pglist.c 19 Dec 2016 13:12:28 -0000 d4201 1 a4201 1 + for (psi = uvm_physseg_get_last(); uvm_physseg_valid(psi); psi = uvm_physseg_get_prev(psi)) d4205 1 a4205 1 + for (psi = uvm_physseg_get_first(); uvm_physseg_valid(psi); psi = uvm_physseg_get_next(psi)) d4343 1 a4343 1 + for (psi = uvm_physseg_get_last(); uvm_physseg_valid(psi); psi = uvm_physseg_get_prev(psi)) d4347 1 a4347 1 + for (psi = uvm_physseg_get_first(); uvm_physseg_valid(psi); psi = uvm_physseg_get_next(psi)) d4367 1 a4367 1 +++ sys/uvm/pmap/pmap.c 19 Dec 2016 13:12:29 -0000 d4393 1 a4393 1 + uvm_physseg_valid(bank); d4438 1 a4438 1 + if (uvm_physseg_valid(maybe_bank) == false d4448 1 a4448 1 + if (uvm_physseg_valid(maybe_bank)) { @