PERFORCE change 134124 for review

Kip Macy kmacy at FreeBSD.org
Fri Jan 25 23:36:51 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=134124

Change 134124 by kmacy at pandemonium:kmacy:xen31 on 2008/01/26 07:35:55

	assert that the multicalls succeed

Affected files ...

.. //depot/projects/xen31/sys/i386/xen/pmap.c#35 edit

Differences ...

==== //depot/projects/xen31/sys/i386/xen/pmap.c#35 (text+ko) ====

@@ -1227,7 +1227,8 @@
 	int mclcount = 0;
 	multicall_entry_t mcl[16];
 	multicall_entry_t *mclp = mcl;
-
+	int error;
+	
 	pte = vtopte(sva);
 	endpte = pte + count;
 	while (pte < endpte) {
@@ -1245,13 +1246,17 @@
 		mclp++;
 		mclcount++;
 		if (mclcount == 16) {
-			HYPERVISOR_multicall(mcl, mclcount);
+			error = HYPERVISOR_multicall(mcl, mclcount);
 			mclp = mcl;
 			mclcount = 0;
+			KASSERT(error == 0, ("bad multicall %d", error));
 		}		
 	}
-	if (mclcount) 
-		HYPERVISOR_multicall(mcl, mclcount);
+	if (mclcount) {
+		error = HYPERVISOR_multicall(mcl, mclcount);
+		KASSERT(error == 0, ("bad multicall %d", error));
+	}
+	
 #ifdef INVARIANTS
 	for (pte = vtopte(sva), mclcount = 0; mclcount < count; mclcount++, pte++)
 		KASSERT(*pte, ("pte not set for va=0x%x\n", sva + mclcount*PAGE_SIZE));
@@ -2746,7 +2751,7 @@
 	vm_pindex_t diff, psize;
 	multicall_entry_t mcl[16];
 	multicall_entry_t *mclp = mcl;
-	int count = 0;
+	int error, count = 0;
 	
 	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
 	psize = atop(end - start);
@@ -2759,14 +2764,18 @@
 		    prot, mpte);
 		m = TAILQ_NEXT(m, listq);
 		if (count == 16) {
-			HYPERVISOR_multicall(mcl, count);
+			error = HYPERVISOR_multicall(mcl, count);
+			KASSERT(error == 0, ("bad multicall %d", error));
 			mclp = mcl;
 			count = 0;
 		}
 	}
-	if (count)
-		HYPERVISOR_multicall(mcl, count);
- 	PMAP_UNLOCK(pmap);
+	if (count) {
+		error = HYPERVISOR_multicall(mcl, count);
+		KASSERT(error == 0, ("bad multicall %d", error));
+	}
+	
+	PMAP_UNLOCK(pmap);
 }
 
 /*
@@ -2795,7 +2804,7 @@
 void
 pmap_enter_quick_range(pmap_t pmap, vm_offset_t *addrs, vm_page_t *pages, vm_prot_t *prots, int count)
 {
-	int i, index = 0;
+	int i, error, index = 0;
 	multicall_entry_t mcl[16];
 	multicall_entry_t *mclp = mcl;
 		
@@ -2806,13 +2815,17 @@
 
 		(void) pmap_enter_quick_locked(&mclp, &index, pmap, *addrs, *pages, *prots, NULL);
 		if (index == 16) {
-			HYPERVISOR_multicall(mcl, count);
+			error = HYPERVISOR_multicall(mcl, count);
 			mclp = mcl;
 			index = 0;
+			KASSERT(error == 0, ("bad multicall %d", error));
 		}
 	}
-	if (index)
-		HYPERVISOR_multicall(mcl, index);
+	if (index) {
+		error = HYPERVISOR_multicall(mcl, index);
+		KASSERT(error == 0, ("bad multicall %d", error));
+	}
+	
 	PMAP_UNLOCK(pmap);
 }
 


More information about the p4-projects mailing list