summaryrefslogtreecommitdiffstats
path: root/sys/dev/agp
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-07-13 20:55:21 +0000
committeralc <alc@FreeBSD.org>2002-07-13 20:55:21 +0000
commit828e129a104d290776ee93555930a9c9f53b7bd6 (patch)
tree112c6c5d9bec2f3e71756f53a17e33836ebc0002 /sys/dev/agp
parenta23831a53890f04214677545c287decb8eb6b6d9 (diff)
downloadFreeBSD-src-828e129a104d290776ee93555930a9c9f53b7bd6.zip
FreeBSD-src-828e129a104d290776ee93555930a9c9f53b7bd6.tar.gz
o Complete the locking of page queue accesses by vm_page_unwire().
o Assert that the page queues lock is held in vm_page_unwire(). o Make vm_page_lock_queues() and vm_page_unlock_queues() visible to kernel loadable modules.
Diffstat (limited to 'sys/dev/agp')
-rw-r--r--sys/dev/agp/agp.c4
-rw-r--r--sys/dev/agp/agp_i810.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/agp/agp.c b/sys/dev/agp/agp.c
index b16d1ee..ab488fb 100644
--- a/sys/dev/agp/agp.c
+++ b/sys/dev/agp/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/dev/agp/agp_i810.c b/sys/dev/agp/agp_i810.c
index ed5f6d2..9f1b292 100644
--- a/sys/dev/agp/agp_i810.c
+++ b/sys/dev/agp/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;
OpenPOWER on IntegriCloud