svn commit: r273965 - head/sys/dev/agp

Tijl Coosemans tijl at FreeBSD.org
Sun Nov 2 11:47:41 UTC 2014


Author: tijl
Date: Sun Nov  2 11:47:40 2014
New Revision: 273965
URL: https://svnweb.freebsd.org/changeset/base/273965

Log:
  - agp_generic_unbind_memory: flush AGP TLB before unwiring pages
  - agp_bind_pages: assert that pages have been wired down
  
  MFC after:	1 month

Modified:
  head/sys/dev/agp/agp.c

Modified: head/sys/dev/agp/agp.c
==============================================================================
--- head/sys/dev/agp/agp.c	Sun Nov  2 11:28:15 2014	(r273964)
+++ head/sys/dev/agp/agp.c	Sun Nov  2 11:47:40 2014	(r273965)
@@ -645,6 +645,9 @@ agp_generic_unbind_memory(device_t dev, 
 	 */
 	for (i = 0; i < mem->am_size; i += AGP_PAGE_SIZE)
 		AGP_UNBIND_PAGE(dev, mem->am_offset + i);
+
+	AGP_FLUSH_TLB(dev);
+
 	VM_OBJECT_WLOCK(mem->am_obj);
 	for (i = 0; i < mem->am_size; i += PAGE_SIZE) {
 		m = vm_page_lookup(mem->am_obj, atop(i));
@@ -653,8 +656,6 @@ agp_generic_unbind_memory(device_t dev, 
 		vm_page_unlock(m);
 	}
 	VM_OBJECT_WUNLOCK(mem->am_obj);
-		
-	AGP_FLUSH_TLB(dev);
 
 	mem->am_offset = 0;
 	mem->am_is_bound = 0;
@@ -1000,6 +1001,8 @@ agp_bind_pages(device_t dev, vm_page_t *
 	mtx_lock(&sc->as_lock);
 	for (i = 0; i < size; i += PAGE_SIZE) {
 		m = pages[OFF_TO_IDX(i)];
+		KASSERT(m->wire_count > 0,
+		    ("agp_bind_pages: page %p hasn't been wired", m));
 
 		/*
 		 * Install entries in the GATT, making sure that if


More information about the svn-src-head mailing list