Index: sys/dev/drm2/ttm/ttm_bo_vm.c =================================================================== --- sys/dev/drm2/ttm/ttm_bo_vm.c +++ sys/dev/drm2/ttm/ttm_bo_vm.c @@ -104,7 +104,7 @@ struct ttm_buffer_object *bo = vm_obj->handle; struct ttm_bo_device *bdev = bo->bdev; struct ttm_tt *ttm = NULL; - vm_page_t m, m1; + vm_page_t m; int ret; int retval = VM_PAGER_OK; struct ttm_mem_type_manager *man = @@ -234,22 +234,14 @@ ttm_bo_unreserve(bo); goto retry; } - m1 = vm_page_lookup(vm_obj, OFF_TO_IDX(offset)); - /* XXX This looks like it should just be vm_page_replace? */ - if (m1 == NULL) { - if (vm_page_insert(m, vm_obj, OFF_TO_IDX(offset))) { - vm_page_xunbusy(m); - VM_OBJECT_WUNLOCK(vm_obj); - vm_wait(vm_obj); - VM_OBJECT_WLOCK(vm_obj); - ttm_mem_io_unlock(man); - ttm_bo_unreserve(bo); - goto retry; - } - } else { - KASSERT(m == m1, - ("inconsistent insert bo %p m %p m1 %p offset %jx", - bo, m, m1, (uintmax_t)offset)); + if (vm_page_insert(m, vm_obj, OFF_TO_IDX(offset)) == ENOMEM) { + vm_page_xunbusy(m); + VM_OBJECT_WUNLOCK(vm_obj); + vm_wait(vm_obj); + VM_OBJECT_WLOCK(vm_obj); + ttm_mem_io_unlock(man); + ttm_bo_unreserve(bo); + goto retry; } vm_page_valid(m); if (*mres != NULL) { Index: sys/vm/vm_radix.h =================================================================== --- sys/vm/vm_radix.h +++ sys/vm/vm_radix.h @@ -80,13 +80,7 @@ vm_radix_insert_lookup_lt(struct vm_radix *rtree, vm_page_t page, vm_page_t *mpred) { - int error; - - error = VM_RADIX_PCTRIE_INSERT_LOOKUP_LE(&rtree->rt_trie, page, mpred); - if (__predict_false(error == EEXIST)) - panic("vm_radix_insert_lookup_lt: page already present, %p", - *mpred); - return (error); + return (VM_RADIX_PCTRIE_INSERT_LOOKUP_LE(&rtree->rt_trie, page, mpred)); } /*