Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/drm2/ttm/ttm_tt.c
Show First 20 Lines • Show All 288 Lines • ▼ Show 20 Lines | int ttm_tt_swapin(struct ttm_tt *ttm) | ||||
vm_object_pip_add(obj, 1); | vm_object_pip_add(obj, 1); | ||||
for (i = 0; i < ttm->num_pages; ++i) { | for (i = 0; i < ttm->num_pages; ++i) { | ||||
from_page = vm_page_grab(obj, i, VM_ALLOC_NORMAL); | from_page = vm_page_grab(obj, i, VM_ALLOC_NORMAL); | ||||
if (from_page->valid != VM_PAGE_BITS_ALL) { | if (from_page->valid != VM_PAGE_BITS_ALL) { | ||||
if (vm_pager_has_page(obj, i, NULL, NULL)) { | if (vm_pager_has_page(obj, i, NULL, NULL)) { | ||||
rv = vm_pager_get_pages(obj, &from_page, 1, | rv = vm_pager_get_pages(obj, &from_page, 1, | ||||
NULL, NULL); | NULL, NULL); | ||||
if (rv != VM_PAGER_OK) { | if (rv != VM_PAGER_OK) { | ||||
vm_page_lock(from_page); | |||||
vm_page_free(from_page); | vm_page_free(from_page); | ||||
vm_page_unlock(from_page); | |||||
ret = -EIO; | ret = -EIO; | ||||
goto err_ret; | goto err_ret; | ||||
} | } | ||||
} else | } else | ||||
vm_page_zero_invalid(from_page, TRUE); | vm_page_zero_invalid(from_page, TRUE); | ||||
} | } | ||||
vm_page_xunbusy(from_page); | vm_page_xunbusy(from_page); | ||||
to_page = ttm->pages[i]; | to_page = ttm->pages[i]; | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |