Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/drm2/ttm/ttm_bo_vm.c
Show First 20 Lines • Show All 226 Lines • ▼ Show 20 Lines | if (bo->mem.bus.is_iomem) { | ||||
} | } | ||||
pmap_page_set_memattr(m, | pmap_page_set_memattr(m, | ||||
(bo->mem.placement & TTM_PL_FLAG_CACHED) ? | (bo->mem.placement & TTM_PL_FLAG_CACHED) ? | ||||
VM_MEMATTR_WRITE_BACK : ttm_io_prot(bo->mem.placement)); | VM_MEMATTR_WRITE_BACK : ttm_io_prot(bo->mem.placement)); | ||||
} | } | ||||
VM_OBJECT_WLOCK(vm_obj); | VM_OBJECT_WLOCK(vm_obj); | ||||
if (vm_page_busied(m)) { | if (vm_page_busied(m)) { | ||||
vm_page_lock(m); | vm_page_sleep_if_busy(m, "ttmpbs"); | ||||
VM_OBJECT_WUNLOCK(vm_obj); | |||||
vm_page_busy_sleep(m, "ttmpbs", false); | |||||
VM_OBJECT_WLOCK(vm_obj); | |||||
ttm_mem_io_unlock(man); | ttm_mem_io_unlock(man); | ||||
ttm_bo_unreserve(bo); | ttm_bo_unreserve(bo); | ||||
goto retry; | goto retry; | ||||
} | } | ||||
m1 = vm_page_lookup(vm_obj, OFF_TO_IDX(offset)); | m1 = vm_page_lookup(vm_obj, OFF_TO_IDX(offset)); | ||||
if (m1 == NULL) { | if (m1 == NULL) { | ||||
if (vm_page_insert(m, vm_obj, OFF_TO_IDX(offset))) { | if (vm_page_insert(m, vm_obj, OFF_TO_IDX(offset))) { | ||||
VM_OBJECT_WUNLOCK(vm_obj); | VM_OBJECT_WUNLOCK(vm_obj); | ||||
▲ Show 20 Lines • Show All 313 Lines • Show Last 20 Lines |