diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2013-07-27 16:44:37 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2013-07-27 16:44:37 +0000 |
| commit | 18ec23deea6fb721477bbaadb2296bc8accb5465 (patch) | |
| tree | 96414538052757ac3b0f68fd1cd4fc8b3170d505 /sys/dev | |
| parent | 49c1fb04b2b8d8bfd46f3043e2b2dd202968df89 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/drm2/ttm/ttm_bo_vm.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/drm2/ttm/ttm_bo_vm.c b/sys/dev/drm2/ttm/ttm_bo_vm.c index 40a0fe4066c4..08e1c8777c6b 100644 --- a/sys/dev/drm2/ttm/ttm_bo_vm.c +++ b/sys/dev/drm2/ttm/ttm_bo_vm.c @@ -102,7 +102,7 @@ ttm_bo_vm_fault(vm_object_t vm_obj, vm_ooffset_t offset, struct ttm_buffer_object *bo = vm_obj->handle; struct ttm_bo_device *bdev = bo->bdev; struct ttm_tt *ttm = NULL; - vm_page_t m, oldm; + vm_page_t m, m1, oldm; int ret; int retval = VM_PAGER_OK; struct ttm_mem_type_manager *man = @@ -220,7 +220,14 @@ reserve: } m->valid = VM_PAGE_BITS_ALL; *mres = m; - vm_page_insert(m, vm_obj, OFF_TO_IDX(offset)); + m1 = vm_page_lookup(vm_obj, OFF_TO_IDX(offset)); + if (m1 == NULL) { + vm_page_insert(m, vm_obj, OFF_TO_IDX(offset)); + } else { + KASSERT(m == m1, + ("inconsistent insert bo %p m %p m1 %p offset %jx", + bo, m, m1, (uintmax_t)offset)); + } vm_page_busy(m); if (oldm != NULL) { |
