Lines Matching defs:pv
213 pv_addr_t *pv = bmi->bmi_freeblocks;
282 pv->pv_pa = bmi->bmi_kernelend;
283 pv->pv_va = KERN_PHYSTOV(pv->pv_pa);
284 pv->pv_size = bmi->bmi_end - bmi->bmi_kernelend;
285 bmi->bmi_freepages += pv->pv_size / PAGE_SIZE;
287 __func__, pv->pv_size / PAGE_SIZE, pv->pv_pa,
288 pv->pv_pa + pv->pv_size - 1, pv->pv_va);
289 pv++;
295 pv->pv_pa = bmi->bmi_start;
296 pv->pv_va = KERN_PHYSTOV(pv->pv_pa);
297 pv->pv_size = bmi->bmi_kernelstart - pv->pv_pa;
298 bmi->bmi_freepages += pv->pv_size / PAGE_SIZE;
300 __func__, pv->pv_size / PAGE_SIZE, pv->pv_pa,
301 pv->pv_pa + pv->pv_size - 1, pv->pv_va);
302 pv++;
305 bmi->bmi_nfreeblocks = pv - bmi->bmi_freeblocks;
312 concat_pvaddr(pv_addr_t *acc_pv, pv_addr_t *pv)
314 if (acc_pv->pv_pa + acc_pv->pv_size == pv->pv_pa
315 && acc_pv->pv_va + acc_pv->pv_size == pv->pv_va
316 && acc_pv->pv_prot == pv->pv_prot
317 && acc_pv->pv_cache == pv->pv_cache) {
319 VPRINTF("%s: appending pv %p (%#lx..%#lx) to %#lx..%#lx\n",
320 __func__, pv, pv->pv_pa, pv->pv_pa + pv->pv_size,
323 acc_pv->pv_size += pv->pv_size;
331 add_pages(struct bootmem_info *bmi, pv_addr_t *pv)
334 while ((*pvp) != NULL && (*pvp)->pv_va <= pv->pv_va) {
337 if (concat_pvaddr(pv0, pv)) {
338 VPRINTF("%s: %s pv %p (%#lx..%#lx) to %#lx..%#lx\n",
339 __func__, "appending", pv,
340 pv->pv_pa, pv->pv_pa + pv->pv_size - 1,
341 pv0->pv_pa, pv0->pv_pa + pv0->pv_size - pv->pv_size - 1);
342 pv = SLIST_NEXT(pv0, pv_list);
343 if (pv != NULL && concat_pvaddr(pv0, pv)) {
344 VPRINTF("%s: %s pv %p (%#lx..%#lx) to %#lx..%#lx\n",
345 __func__, "merging", pv,
346 pv->pv_pa, pv->pv_pa + pv->pv_size - 1,
348 pv0->pv_pa + pv0->pv_size - pv->pv_size - 1);
350 SLIST_INSERT_HEAD(&bmi->bmi_freechunks, pv, pv_list);
354 KASSERT(pv->pv_va != (*pvp)->pv_va);
357 KASSERT((*pvp) == NULL || pv->pv_va < (*pvp)->pv_va);
361 *new_pv = *pv;
365 VPRINTF("%s: adding pv %p (pa %#lx, va %#lx, %lu pages) ",
376 valloc_pages(struct bootmem_info *bmi, pv_addr_t *pv, size_t npages,
424 pv->pv_pa = free_pv->pv_pa;
425 pv->pv_va = free_pv->pv_va;
426 pv->pv_size = nbytes;
427 pv->pv_prot = prot;
428 pv->pv_cache = cache;
438 pv->pv_cache = PTE_CACHE;
453 memset((void *)pv->pv_va, 0, nbytes);
814 VPRINTF("%s: pv %p: chunk VA %#lx..%#lx "
822 pv_addr_t *pv = SLIST_FIRST(&bmi->bmi_chunks);
823 if (!mapallmem_p || pv->pv_pa == bmi->bmi_start) {
824 cur_pv = *pv;
826 pv = SLIST_NEXT(pv, pv_list);
830 cur_pv.pv_size = pv->pv_pa - cur_pv.pv_pa;
834 while (pv != NULL) {
836 if (concat_pvaddr(&cur_pv, pv)) {
837 pv = SLIST_NEXT(pv, pv_list);
840 if (cur_pv.pv_pa + cur_pv.pv_size < pv->pv_pa) {
842 * See if we can extend the current pv to emcompass the
847 cur_pv.pv_size = pv->pv_pa - cur_pv.pv_va;
867 cur_pv.pv_size = pv->pv_pa - cur_pv.pv_va;
875 * The new pv didn't concatenate so emit the current one
876 * and use the new pv as the current pv.
884 cur_pv = *pv;
885 pv = SLIST_NEXT(pv, pv_list);
1032 pv = &bmi->bmi_freeblocks[i];
1035 pv->pv_pa, pv->pv_pa + pv->pv_size - 1,
1036 pv->pv_size / PAGE_SIZE);