Hi Everyone, Please find below a patch to remove .avail_(start|end) from struct vm_physseg
I couldn't find a reason for them to be used redundantly, but I may be wrong. Are there port specific uses for these ? -- Cherry diff -r 0b3902dbe274 sys/arch/acorn26/acorn26/pmap.c --- a/sys/arch/acorn26/acorn26/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/acorn26/acorn26/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -301,11 +301,11 @@ 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) { + if (VM_PHYSMEM_PTR(i)->start < VM_PHYSMEM_PTR(i)->end) { addr = (vaddr_t) ((char*)MEMC_PHYS_BASE + - ptoa(VM_PHYSMEM_PTR(i)->avail_start)); - VM_PHYSMEM_PTR(i)->avail_start++; + ptoa(VM_PHYSMEM_PTR(i)->start)); + VM_PHYSMEM_PTR(i)->start++; break; } } diff -r 0b3902dbe274 sys/arch/alpha/alpha/machdep.c --- a/sys/arch/alpha/alpha/machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/alpha/alpha/machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -617,11 +617,10 @@ vps = VM_PHYSMEM_PTR(vm_nphysseg - 1); /* 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 ((vps->end - vps->start) < atop(sz)) + sz = ptoa(vps->end - vps->start); vps->end -= atop(sz); - vps->avail_end -= atop(sz); msgbufaddr = (void *) ALPHA_PHYS_TO_K0SEG(ptoa(vps->end)); initmsgbuf(msgbufaddr, sz); diff -r 0b3902dbe274 sys/arch/alpha/alpha/pmap.c --- a/sys/arch/alpha/alpha/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/alpha/alpha/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -1027,35 +1027,34 @@ 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, - VM_PHYSMEM_PTR(bank)->start, VM_PHYSMEM_PTR(bank)->avail_end); + printf(" bank %d: start 0x%lx, start 0x%lx, " + "end 0x%lx\n", bank, VM_PHYSMEM_PTR(bank)->start, + VM_PHYSMEM_PTR(bank)->start, VM_PHYSMEM_PTR(bank)->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 (VM_PHYSMEM_PTR(bank)->start != VM_PHYSMEM_PTR(bank)->start || + VM_PHYSMEM_PTR(bank)->start >= VM_PHYSMEM_PTR(bank)->end) continue; #if 0 - printf(" avail_end - avail_start = 0x%lx\n", - VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start); + printf(" end - start = 0x%lx\n", + VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start); #endif - if ((VM_PHYSMEM_PTR(bank)->avail_end - VM_PHYSMEM_PTR(bank)->avail_start) + if ((VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start) < npgs) continue; /* * There are enough pages here; steal them! */ - pa = ptoa(VM_PHYSMEM_PTR(bank)->avail_start); - VM_PHYSMEM_PTR(bank)->avail_start += npgs; + pa = ptoa(VM_PHYSMEM_PTR(bank)->start); 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_PHYSMEM_PTR(bank)->start == VM_PHYSMEM_PTR(bank)->end) { if (vm_nphysseg == 1) panic("pmap_steal_memory: out of memory!"); @@ -1116,10 +1115,10 @@ printf("bank %d\n", bank); printf("\tstart = 0x%x\n", ptoa(VM_PHYSMEM_PTR(bank)->start)); printf("\tend = 0x%x\n", ptoa(VM_PHYSMEM_PTR(bank)->end)); - printf("\tavail_start = 0x%x\n", - ptoa(VM_PHYSMEM_PTR(bank)->avail_start)); - printf("\tavail_end = 0x%x\n", - ptoa(VM_PHYSMEM_PTR(bank)->avail_end)); + printf("\tstart = 0x%x\n", + ptoa(VM_PHYSMEM_PTR(bank)->start)); + printf("\tend = 0x%x\n", + ptoa(VM_PHYSMEM_PTR(bank)->end)); } #endif } diff -r 0b3902dbe274 sys/arch/amd64/amd64/machdep.c --- a/sys/arch/amd64/amd64/machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/amd64/amd64/machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -1450,20 +1450,20 @@ for (x = 0; x < vm_nphysseg; x++) { vps = VM_PHYSMEM_PTR(x); - if (ctob(vps->avail_end) == avail_end) + if (ctob(vps->end) == avail_end) break; } if (x == vm_nphysseg) panic("init_x86_64: can't find end of memory"); /* 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); + if ((vps->end - vps->start) < atop(sz)) + sz = ctob(vps->end - vps->start); - vps->avail_end -= atop(sz); + vps->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); + msgbuf_p_seg[msgbuf_p_cnt++].paddr = ctob(vps->end); /* Remove the last segment if it now has no pages. */ if (vps->start == vps->end) { @@ -1471,10 +1471,10 @@ VM_PHYSMEM_PTR_SWAP(x, x + 1); } - /* Now find where the new avail_end is. */ + /* Now find where the new 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; + if (VM_PHYSMEM_PTR(x)->end > avail_end) + avail_end = VM_PHYSMEM_PTR(x)->end; avail_end = ctob(avail_end); if (sz == reqsz) diff -r 0b3902dbe274 sys/arch/arm/arm32/pmap.c --- a/sys/arch/arm/arm32/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/arm/arm32/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -7750,23 +7750,23 @@ KASSERT(mask == 0); for (i = 0; i < vm_nphysseg; i++) { ps = VM_PHYSMEM_PTR(i); - if (ps->avail_start == atop(pv->pv_pa + pv->pv_size) - && pv->pv_va + pv->pv_size <= ptoa(ps->avail_end)) { + if (ps->start == atop(pv->pv_pa + pv->pv_size) + && pv->pv_va + pv->pv_size <= ptoa(ps->end)) { rpv->pv_va = pv->pv_va; rpv->pv_pa = pv->pv_pa; rpv->pv_size = amount; *pvp = NULL; pmap_map_chunk(kernel_l1pt.pv_va, - ptoa(ps->avail_start) + (pv->pv_va - pv->pv_pa), - ptoa(ps->avail_start), + ptoa(ps->start) + (pv->pv_va - pv->pv_pa), + ptoa(ps->start), amount - pv->pv_size, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - ps->avail_start += atop(amount - pv->pv_size); + ps->start += atop(amount - pv->pv_size); /* * If we consumed the entire physseg, remove it. */ - if (ps->avail_start == ps->avail_end) { + if (ps->start == ps->end) { for (--vm_nphysseg; i < vm_nphysseg; i++) VM_PHYSMEM_PTR_SWAP(i, i + 1); } diff -r 0b3902dbe274 sys/arch/i386/i386/machdep.c --- a/sys/arch/i386/i386/machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/i386/i386/machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -1036,7 +1036,7 @@ vps = NULL; for (x = 0; x < vm_nphysseg; ++x) { vps = VM_PHYSMEM_PTR(x); - if (ctob(vps->avail_end) == avail_end) { + if (ctob(vps->end) == avail_end) { break; } } @@ -1044,13 +1044,12 @@ panic("init386: can't find end of memory"); /* 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); + if (vps->end - vps->start < atop(sz)) + sz = ctob(vps->end - vps->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); + msgbuf_p_seg[msgbuf_p_cnt++].paddr = ctob(vps->end); /* Remove the last segment if it now has no pages. */ if (vps->start == vps->end) { @@ -1060,8 +1059,8 @@ /* 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; + if (VM_PHYSMEM_PTR(x)->end > avail_end) + avail_end = VM_PHYSMEM_PTR(x)->end; avail_end = ctob(avail_end); if (sz == reqsz) diff -r 0b3902dbe274 sys/arch/ia64/ia64/machdep.c --- a/sys/arch/ia64/ia64/machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/ia64/ia64/machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -179,14 +179,14 @@ printf("Physical memory chunk(s):\n"); for (lcv = 0; - lcv < vm_nphysseg || VM_PHYSMEM_PTR(lcv)->avail_end != 0; + lcv < vm_nphysseg || VM_PHYSMEM_PTR(lcv)->end != 0; lcv++) { - sizetmp = VM_PHYSMEM_PTR(lcv)->avail_end - - VM_PHYSMEM_PTR(lcv)->avail_start; + sizetmp = VM_PHYSMEM_PTR(lcv)->end - + VM_PHYSMEM_PTR(lcv)->start; 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(VM_PHYSMEM_PTR(lcv)->start), + ptoa(VM_PHYSMEM_PTR(lcv)->end) - 1, ptoa(sizetmp), sizetmp); } printf("Total number of segments: vm_nphysseg = %d \n", diff -r 0b3902dbe274 sys/arch/ia64/ia64/pmap.c --- a/sys/arch/ia64/ia64/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/ia64/ia64/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -327,25 +327,23 @@ 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 (VM_PHYSMEM_PTR(lcv)->start >= VM_PHYSMEM_PTR(lcv)->end) continue; - if ((VM_PHYSMEM_PTR(lcv)->avail_end - VM_PHYSMEM_PTR(lcv)->avail_start) + if ((VM_PHYSMEM_PTR(lcv)->end - VM_PHYSMEM_PTR(lcv)->start) < npgs) continue; /* * There are enough pages here; steal them! */ - pa = ptoa(VM_PHYSMEM_PTR(lcv)->avail_start); - VM_PHYSMEM_PTR(lcv)->avail_start += npgs; + pa = ptoa(VM_PHYSMEM_PTR(lcv)->start); VM_PHYSMEM_PTR(lcv)->start += npgs; /* * Have we used up this segment? */ - if (VM_PHYSMEM_PTR(lcv)->avail_start == + if (VM_PHYSMEM_PTR(lcv)->start == VM_PHYSMEM_PTR(lcv)->end) { if (vm_nphysseg == 1) panic("pmap_steal_memory: out of memory!"); @@ -392,19 +390,18 @@ 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 (VM_PHYSMEM_PTR(lcv)->start >= VM_PHYSMEM_PTR(lcv)->end) continue; /* Break off a VHPT sized, aligned chunk off this segment. */ - start1 = VM_PHYSMEM_PTR(lcv)->avail_start; + start1 = VM_PHYSMEM_PTR(lcv)->start; /* 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 = VM_PHYSMEM_PTR(lcv)->end; /* Case 1: Doesn't fit. skip this segment */ diff -r 0b3902dbe274 sys/arch/mips/mips/mips_machdep.c --- a/sys/arch/mips/mips/mips_machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/mips/mips/mips_machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -2004,17 +2004,16 @@ * 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)) + if (vps->start + atop(sz) <= atop(MIPS_PHYS_MASK)) break; } #endif /* 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 ((vps->end - vps->start) < atop(sz)) + sz = ptoa(vps->end - vps->start); vps->end -= atop(sz); - vps->avail_end -= atop(sz); #ifdef _LP64 msgbufaddr = (void *) MIPS_PHYS_TO_XKPHYS_CACHED(ptoa(vps->end)); #else diff -r 0b3902dbe274 sys/arch/mips/mips/pmap.c --- a/sys/arch/mips/mips/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/mips/mips/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -633,18 +633,16 @@ if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); - printf("%s: seg %u: %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR" %#"PRIxPADDR"\n", + printf("%s: seg %u: %#"PRIxPADDR" %#"PRIxPADDR"\n", __func__, bank, - seg->avail_start, seg->start, - seg->avail_end, seg->end); + seg->start, seg->end); - if (seg->avail_start != seg->start - || seg->avail_start >= seg->avail_end) { + if (seg->start >= seg->end) { printf("%s: seg %u: bad start\n", __func__, bank); continue; } - if (seg->avail_end - seg->avail_start < npgs) { + if (seg->end - seg->start < npgs) { printf("%s: seg %u: too small for %u pages\n", __func__, bank, npgs); continue; @@ -653,14 +651,13 @@ /* * There are enough pages here; steal them! */ - pa = ptoa(seg->avail_start); - seg->avail_start += npgs; + pa = ptoa(seg->start); seg->start += npgs; /* * Have we used up this segment? */ - if (seg->avail_start == seg->end) { + if (seg->start == seg->end) { if (vm_nphysseg == 1) panic("pmap_steal_memory: out of memory!"); diff -r 0b3902dbe274 sys/arch/powerpc/isa/isadma_machdep.c --- a/sys/arch/powerpc/isa/isadma_machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/powerpc/isa/isadma_machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -169,8 +169,8 @@ 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; + if (avail_end < VM_PHYSMEM_PTR(bank)->end << PGSHIFT) + avail_end = VM_PHYSMEM_PTR(bank)->end << PGSHIFT; } /* Call common function to create the basic map. */ @@ -601,8 +601,8 @@ 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; + if (avail_end < VM_PHYSMEM_PTR(bank)->end << PGSHIFT) + avail_end = VM_PHYSMEM_PTR(bank)->end << PGSHIFT; } if (avail_end > ISA_DMA_BOUNCE_THRESHOLD) diff -r 0b3902dbe274 sys/arch/powerpc/oea/pmap.c --- a/sys/arch/powerpc/oea/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/powerpc/oea/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -2929,8 +2929,8 @@ 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); + ps->end - ps->start >= npgs) { + pa = ptoa(ps->start); break; } } @@ -2938,14 +2938,13 @@ 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 (ps->start == ps->end) { /* * If this was the last one, then a very bad thing has occurred */ @@ -2966,7 +2965,7 @@ u_int cnt = 0; for (bank = 0; bank < vm_nphysseg; bank++) { ps = VM_PHYSMEM_PTR(bank); - cnt += ps->avail_end - ps->avail_start; + cnt += ps->end - ps->start; } printf("pmap_steal_memory: stole %u (total %u) pages (%u left)\n", npgs, pmap_pages_stolen, cnt); @@ -3448,12 +3447,12 @@ int 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; + cnt += VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start; 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(VM_PHYSMEM_PTR(bank)->start), + ptoa(VM_PHYSMEM_PTR(bank)->end), + ptoa(VM_PHYSMEM_PTR(bank)->end - VM_PHYSMEM_PTR(bank)->start)); } format_bytes(pbuf, sizeof(pbuf), ptoa((u_int64_t) cnt)); printf("pmap_bootstrap: UVM memory = %s (%u pages)\n", @@ -3488,8 +3487,8 @@ pm->pm_sr[0] = sr; for (bank = 0; bank < vm_nphysseg; bank++) { - pa_end = ptoa(VM_PHYSMEM_PTR(bank)->avail_end); - pa = ptoa(VM_PHYSMEM_PTR(bank)->avail_start); + pa_end = ptoa(VM_PHYSMEM_PTR(bank)->end); + pa = ptoa(VM_PHYSMEM_PTR(bank)->start); for (; pa < pa_end; pa += PAGE_SIZE) { ptegidx = va_to_pteg(pm, pa); pmap_pte_create(&pt, pm, pa, pa | PTE_M|PTE_BW); diff -r 0b3902dbe274 sys/arch/powerpc/powerpc/bus_dma.c --- a/sys/arch/powerpc/powerpc/bus_dma.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/powerpc/powerpc/bus_dma.c Wed Dec 30 15:27:27 2015 +0530 @@ -547,10 +547,10 @@ int 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); + if (start > ptoa(VM_PHYSMEM_PTR(bank)->start)) + start = ptoa(VM_PHYSMEM_PTR(bank)->start); + if (end < ptoa(VM_PHYSMEM_PTR(bank)->end)) + end = ptoa(VM_PHYSMEM_PTR(bank)->end); } return _bus_dmamem_alloc_range(t, size, alignment, boundary, segs, diff -r 0b3902dbe274 sys/arch/sh3/sh3/pmap.c --- a/sys/arch/sh3/sh3/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/sh3/sh3/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -139,19 +139,18 @@ bank = NULL; for (i = 0; i < vm_nphysseg; i++) { bank = VM_PHYSMEM_PTR(i); - if (npage <= bank->avail_end - bank->avail_start) + if (npage <= bank->end - bank->start) break; } KDASSERT(i != vm_nphysseg); KDASSERT(bank != NULL); /* Steal pages */ - pa = ptoa(bank->avail_start); - bank->avail_start += npage; + pa = ptoa(bank->start); bank->start += npage; /* GC memory bank */ - if (bank->avail_start == bank->end) { + if (bank->start == bank->end) { /* Remove this segment from the list. */ vm_nphysseg--; KDASSERT(vm_nphysseg > 0); diff -r 0b3902dbe274 sys/arch/vax/vax/pmap.c --- a/sys/arch/vax/vax/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/vax/vax/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -491,8 +491,7 @@ * A vax only have one segment of memory. */ - v = (VM_PHYSMEM_PTR(0)->avail_start << PGSHIFT) | KERNBASE; - VM_PHYSMEM_PTR(0)->avail_start += npgs; + v = (VM_PHYSMEM_PTR(0)->start << PGSHIFT) | KERNBASE; VM_PHYSMEM_PTR(0)->start += npgs; memset((void *)v, 0, size); return v; diff -r 0b3902dbe274 sys/arch/x86/x86/x86_machdep.c --- a/sys/arch/x86/x86/x86_machdep.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/arch/x86/x86/x86_machdep.c Wed Dec 30 15:27:27 2015 +0530 @@ -830,7 +830,6 @@ (uint64_t)atop(tmp)); #endif uvm_page_physload(atop(seg_start), atop(tmp), - atop(seg_start), atop(tmp), x86_freelists[i].freelist); seg_start = tmp; } @@ -843,9 +842,8 @@ (uint64_t)atop(seg_start), (uint64_t)atop(seg_end)); #endif - uvm_page_physload(atop(seg_start), - atop(seg_end), atop(seg_start), - atop(seg_end), VM_FREELIST_DEFAULT); + uvm_page_physload(atop(seg_start), atop(seg_end), + VM_FREELIST_DEFAULT); } } @@ -872,7 +870,6 @@ (uint64_t)atop(tmp)); #endif uvm_page_physload(atop(seg_start1), atop(tmp), - atop(seg_start1), atop(tmp), x86_freelists[i].freelist); seg_start1 = tmp; } @@ -885,9 +882,8 @@ (uint64_t)atop(seg_start1), (uint64_t)atop(seg_end1)); #endif - uvm_page_physload(atop(seg_start1), - atop(seg_end1), atop(seg_start1), - atop(seg_end1), VM_FREELIST_DEFAULT); + uvm_page_physload(atop(seg_start1), atop(seg_end1), + VM_FREELIST_DEFAULT); } } } diff -r 0b3902dbe274 sys/uvm/pmap/pmap.c --- a/sys/uvm/pmap/pmap.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/uvm/pmap/pmap.c Wed Dec 30 15:27:27 2015 +0530 @@ -417,24 +417,20 @@ if (uvm.page_init_done == true) panic("pmap_steal_memory: called _after_ bootstrap"); - if (seg->avail_start != seg->start || - seg->avail_start >= seg->avail_end) - continue; - - if ((seg->avail_end - seg->avail_start) < npgs) + if ((seg->end - seg->start) < npgs) continue; /* * There are enough pages here; steal them! */ - pa = ptoa(seg->avail_start); - seg->avail_start += npgs; + pa = ptoa(seg->start); + seg->start += npgs; seg->start += npgs; /* * Have we used up this segment? */ - if (seg->avail_start == seg->end) { + if (seg->jstart == seg->end) { if (vm_nphysseg == 1) panic("pmap_steal_memory: out of memory!"); diff -r 0b3902dbe274 sys/uvm/uvm_extern.h --- a/sys/uvm/uvm_extern.h Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/uvm/uvm_extern.h Wed Dec 30 15:27:27 2015 +0530 @@ -702,8 +702,7 @@ 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_page_physload(paddr_t, paddr_t, int); void uvm_setpagesize(void); /* uvm_pager.c */ diff -r 0b3902dbe274 sys/uvm/uvm_page.c --- a/sys/uvm/uvm_page.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/uvm/uvm_page.c Wed Dec 30 15:27:27 2015 +0530 @@ -446,8 +446,8 @@ #ifdef __HAVE_VM_PAGE_MD VM_MDPAGE_INIT(&seg->pgs[i]); #endif - if (atop(paddr) >= seg->avail_start && - atop(paddr) < seg->avail_end) { + if (atop(paddr) >= seg->start && + atop(paddr) < seg->end) { uvmexp.npages++; /* add page to free pool */ uvm_pagefree(&seg->pgs[i]); @@ -644,13 +644,11 @@ continue; /* try from front */ - if (seg->avail_start == seg->start && - seg->avail_start < seg->avail_end) { - *paddrp = ctob(seg->avail_start); - seg->avail_start++; + if (seg->start < seg->end) { + *paddrp = ctob(seg->start); seg->start++; /* nothing left? nuke it */ - if (seg->avail_start == seg->end) { + if (seg->start == seg->end) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -662,13 +660,11 @@ } /* try from rear */ - if (seg->avail_end == seg->end && - seg->avail_start < seg->avail_end) { - *paddrp = ctob(seg->avail_end - 1); - seg->avail_end--; + if (seg->start < seg->end) { + *paddrp = ctob(seg->end - 1); seg->end--; /* nothing left? nuke it */ - if (seg->avail_end == seg->start) { + if (seg->end == seg->start) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -690,16 +686,14 @@ seg = VM_PHYSMEM_PTR(lcv); /* any room in this bank? */ - if (seg->avail_start >= seg->avail_end) + if (seg->start >= seg->end) continue; /* nope */ - *paddrp = ctob(seg->avail_start); - seg->avail_start++; - /* truncate! */ - seg->start = seg->avail_start; + *paddrp = ctob(seg->start); + seg->start++; /* nothing left? nuke it */ - if (seg->avail_start == seg->end) { + if (seg->start == seg->end) { if (vm_nphysmem == 1) panic("uvm_page_physget: out of memory!"); vm_nphysmem--; @@ -736,8 +730,7 @@ */ void -uvm_page_physload(paddr_t start, paddr_t end, paddr_t avail_start, - paddr_t avail_end, int free_list) +uvm_page_physload(paddr_t start, paddr_t end, int free_list) { int preload, lcv; psize_t npages; @@ -826,8 +819,6 @@ ps->start = start; ps->end = end; - ps->avail_start = avail_start; - ps->avail_end = avail_end; if (preload) { ps->pgs = NULL; } else { diff -r 0b3902dbe274 sys/uvm/uvm_page.h --- a/sys/uvm/uvm_page.h Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/uvm/uvm_page.h Wed Dec 30 15:27:27 2015 +0530 @@ -300,8 +300,6 @@ 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 */ diff -r 0b3902dbe274 sys/uvm/uvm_pglist.c --- a/sys/uvm/uvm_pglist.c Sun Sep 13 09:15:02 2015 +0530 +++ b/sys/uvm/uvm_pglist.c Wed Dec 30 15:27:27 2015 +0530 @@ -140,15 +140,15 @@ /* * Make sure that physseg falls within with range to be allocated from. */ - if (high <= ps->avail_start || low >= ps->avail_end) + if (high <= ps->start || low >= ps->end) 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, ps->start + ps->start_hint), alignment); + limit = min(high, ps->end); pagemask = ~((boundary >> PAGE_SHIFT) - 1); skip = 0; second_pass = false; @@ -171,8 +171,8 @@ * 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, ps->start), alignment); + limit = min(limit, ps->start + ps->start_hint); skip = 0; continue; } @@ -287,12 +287,12 @@ * 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, + ps->start_hint = candidate + num - ps->start; + KASSERTMSG(ps->start_hint <= ps->end - ps->start, "%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); + ps->start_hint, ps->start_hint, ps->end, ps->start, + ps->end - ps->start); #ifdef PGALLOC_VERBOSE printf("got %d pgs\n", num); @@ -369,23 +369,19 @@ #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); low = atop(low); high = atop(high); todo = num; - candidate = max(low, ps->avail_start + ps->start_hint); - limit = min(high, ps->avail_end); + candidate = max(low, ps->start + ps->start_hint); + limit = min(high, ps->end); pg = &ps->pgs[candidate - ps->start]; 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 <= ps->start || low >= ps->end) return 0; again: @@ -396,8 +392,8 @@ break; } second_pass = true; - candidate = max(low, ps->avail_start); - limit = min(limit, ps->avail_start + ps->start_hint); + candidate = max(low, ps->start); + limit = min(limit, ps->start + ps->start_hint); pg = &ps->pgs[candidate - ps->start]; goto again; } @@ -426,12 +422,12 @@ * 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, + ps->start_hint = candidate + 1 - ps->start; + KASSERTMSG(ps->start_hint <= ps->end - ps->start, "%#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); + ps->start_hint, ps->start_hint, ps->end, ps->start, + ps->end - ps->start); #ifdef PGALLOC_VERBOSE printf("got %d pgs\n", num - todo);