Page MenuHomeFreeBSD

D46289.diff
No OneTemporary

D46289.diff

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));
}
/*

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 23, 10:58 PM (9 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24106761
Default Alt Text
D46289.diff (1 KB)

Event Timeline