diff options
Diffstat (limited to 'sys/pci')
-rw-r--r-- | sys/pci/agp.c | 4 | ||||
-rw-r--r-- | sys/pci/agp_i810.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/pci/agp.c b/sys/pci/agp.c index b16d1ee..ab488fb 100644 --- a/sys/pci/agp.c +++ b/sys/pci/agp.c @@ -448,7 +448,9 @@ agp_generic_bind_memory(device_t dev, struct agp_memory *mem, for (k = 0; k <= i; k += PAGE_SIZE) { m = vm_page_lookup(mem->am_obj, OFF_TO_IDX(k)); + vm_page_lock_queues(); vm_page_unwire(m, 0); + vm_page_unlock_queues(); } lockmgr(&sc->as_lock, LK_RELEASE, 0, curthread); return error; @@ -499,7 +501,9 @@ agp_generic_unbind_memory(device_t dev, struct agp_memory *mem) AGP_UNBIND_PAGE(dev, mem->am_offset + i); for (i = 0; i < mem->am_size; i += PAGE_SIZE) { m = vm_page_lookup(mem->am_obj, atop(i)); + vm_page_lock_queues(); vm_page_unwire(m, 0); + vm_page_unlock_queues(); } agp_flush_cache(); diff --git a/sys/pci/agp_i810.c b/sys/pci/agp_i810.c index ed5f6d2..9f1b292 100644 --- a/sys/pci/agp_i810.c +++ b/sys/pci/agp_i810.c @@ -399,7 +399,9 @@ agp_i810_free_memory(device_t dev, struct agp_memory *mem) * Unwire the page which we wired in alloc_memory. */ vm_page_t m = vm_page_lookup(mem->am_obj, 0); + vm_page_lock_queues(); vm_page_unwire(m, 0); + vm_page_unlock_queues(); } sc->agp.as_allocated -= mem->am_size; |