Changeset View
Changeset View
Standalone View
Standalone View
sys/arm/nvidia/drm2/tegra_bo.c
Show First 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | tegra_bo_destruct(struct tegra_bo *bo) | ||||
size = round_page(bo->gem_obj.size); | size = round_page(bo->gem_obj.size); | ||||
if (bo->vbase != 0) | if (bo->vbase != 0) | ||||
pmap_qremove(bo->vbase, bo->npages); | pmap_qremove(bo->vbase, bo->npages); | ||||
VM_OBJECT_WLOCK(bo->cdev_pager); | VM_OBJECT_WLOCK(bo->cdev_pager); | ||||
for (i = 0; i < bo->npages; i++) { | for (i = 0; i < bo->npages; i++) { | ||||
m = bo->m[i]; | m = bo->m[i]; | ||||
cdev_pager_free_page(bo->cdev_pager, m); | cdev_pager_free_page(bo->cdev_pager, m); | ||||
vm_page_lock(m); | |||||
m->flags &= ~PG_FICTITIOUS; | m->flags &= ~PG_FICTITIOUS; | ||||
vm_page_unwire_noq(m); | vm_page_unwire_noq(m); | ||||
vm_page_free(m); | vm_page_free(m); | ||||
vm_page_unlock(m); | |||||
} | } | ||||
VM_OBJECT_WUNLOCK(bo->cdev_pager); | VM_OBJECT_WUNLOCK(bo->cdev_pager); | ||||
vm_object_deallocate(bo->cdev_pager); | vm_object_deallocate(bo->cdev_pager); | ||||
if (bo->vbase != 0) | if (bo->vbase != 0) | ||||
vmem_free(kmem_arena, bo->vbase, size); | vmem_free(kmem_arena, bo->vbase, size); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 289 Lines • Show Last 20 Lines |