Lines Matching refs:vmo
470 vm_object_pager_reservoir(vm_object_t *vmo, uintptr_t off) in vm_object_pager_reservoir() argument
475 ASSERT3U(vmo->vmo_type, ==, VMOT_MEM); in vm_object_pager_reservoir()
477 region = vmo->vmo_data; in vm_object_pager_reservoir()
484 vm_object_pager_mmio(vm_object_t *vmo, uintptr_t off) in vm_object_pager_mmio() argument
488 ASSERT3U(vmo->vmo_type, ==, VMOT_MMIO); in vm_object_pager_mmio()
489 ASSERT3P(vmo->vmo_data, !=, NULL); in vm_object_pager_mmio()
490 ASSERT3U(off, <, vmo->vmo_size); in vm_object_pager_mmio()
492 pfn = ((uintptr_t)vmo->vmo_data + off) >> PAGESHIFT; in vm_object_pager_mmio()
505 vm_object_t *vmo; in vm_object_mem_allocate() local
515 vmo = kmem_alloc(sizeof (*vmo), KM_SLEEP); in vm_object_mem_allocate()
518 vmo->vmo_type = VMOT_MEM; in vm_object_mem_allocate()
519 vmo->vmo_size = size; in vm_object_mem_allocate()
520 vmo->vmo_attr = MTRR_TYPE_WB; in vm_object_mem_allocate()
521 vmo->vmo_data = region; in vm_object_mem_allocate()
522 vmo->vmo_refcnt = 1; in vm_object_mem_allocate()
524 return (vmo); in vm_object_mem_allocate()
530 vm_object_t *vmo; in vm_object_mmio_allocate() local
536 vmo = kmem_alloc(sizeof (*vmo), KM_SLEEP); in vm_object_mmio_allocate()
539 vmo->vmo_type = VMOT_MMIO; in vm_object_mmio_allocate()
540 vmo->vmo_size = size; in vm_object_mmio_allocate()
541 vmo->vmo_attr = MTRR_TYPE_UC; in vm_object_mmio_allocate()
542 vmo->vmo_data = (void *)hpa; in vm_object_mmio_allocate()
543 vmo->vmo_refcnt = 1; in vm_object_mmio_allocate()
545 return (vmo); in vm_object_mmio_allocate()
574 vm_object_release(vm_object_t *vmo) in vm_object_release() argument
576 ASSERT(vmo != NULL); in vm_object_release()
578 uint_t ref = atomic_dec_uint_nv(&vmo->vmo_refcnt); in vm_object_release()
585 switch (vmo->vmo_type) { in vm_object_release()
587 vmmr_free((vmmr_region_t *)vmo->vmo_data); in vm_object_release()
592 panic("unexpected object type %u", vmo->vmo_type); in vm_object_release()
596 vmo->vmo_data = NULL; in vm_object_release()
597 vmo->vmo_size = 0; in vm_object_release()
598 kmem_free(vmo, sizeof (*vmo)); in vm_object_release()
605 vm_object_reference(vm_object_t *vmo) in vm_object_reference() argument
607 ASSERT(vmo != NULL); in vm_object_reference()
609 uint_t ref = atomic_inc_uint_nv(&vmo->vmo_refcnt); in vm_object_reference()
620 vm_object_pfn(vm_object_t *vmo, uintptr_t off) in vm_object_pfn() argument
624 switch (vmo->vmo_type) { in vm_object_pfn()
626 return (vm_object_pager_reservoir(vmo, aligned_off)); in vm_object_pfn()
628 return (vm_object_pager_mmio(vmo, aligned_off)); in vm_object_pfn()
632 panic("unexpected object type %u", vmo->vmo_type); in vm_object_pfn()
772 vmspace_map(vmspace_t *vms, vm_object_t *vmo, uintptr_t obj_off, uintptr_t addr, in vmspace_map() argument
779 obj_off >= (obj_off + len) || vmo->vmo_size < (obj_off + len)) { in vmspace_map()
793 vmsm->vmsm_object = vmo; in vmspace_map()
870 vm_object_t *vmo; in vmspace_ensure_mapped() local
884 vmo = vmsm->vmsm_object; in vmspace_ensure_mapped()
885 pfn = vm_object_pfn(vmo, VMSM_OFFSET(vmsm, gpa)); in vmspace_ensure_mapped()
889 vmo->vmo_attr)) { in vmspace_ensure_mapped()
967 vm_object_t *vmo = vmsm->vmsm_object; in vmspace_populate() local
969 const uint8_t attr = vmo->vmo_attr; in vmspace_populate()
978 vm_object_pfn(vmo, VMSM_OFFSET(vmsm, entry.vgie_gpa)); in vmspace_populate()
1201 vm_object_t *vmo) in vmc_space_unmap() argument
1226 vm_object_reference(vmo); in vmc_space_unmap()
1227 vmp->vmp_obj_ref = vmo; in vmc_space_unmap()
1605 vm_object_t *vmo; in vm_segmap_obj() local
1615 err = vm_get_memseg(vm, segid, NULL, NULL, &vmo); in vm_segmap_obj()
1621 VERIFY(len <= vmo->vmo_size); in vm_segmap_obj()
1622 VERIFY((len + segoff) <= vmo->vmo_size); in vm_segmap_obj()
1624 if (vmo->vmo_type != VMOT_MEM) { in vm_segmap_obj()
1637 svma.vmo = vmo; in vm_segmap_obj()
1672 svma.vmo = NULL; in vm_segmap_space()