PERFORCE change 133900 for review

Kip Macy kmacy at FreeBSD.org
Tue Jan 22 17:00:30 PST 2008


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

Change 133900 by kmacy at pandemonium:kmacy:xen31 on 2008/01/23 00:59:30

	cleanup multicall code slightly
	set dirty and referenced bit in pmap_qenter

Affected files ...

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

Differences ...

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

@@ -1219,22 +1219,23 @@
 {
 	pt_entry_t *endpte, *pte;
 	vm_paddr_t pa;
+	vm_offset_t va = sva;
 	int mclcount = 0;
 	multicall_entry_t mcl[16];
 	multicall_entry_t *mclp = mcl;
-	
+
 	pte = vtopte(sva);
 	endpte = pte + count;
 	while (pte < endpte) {
-		pa = xpmap_ptom(VM_PAGE_TO_PHYS(*ma)) | pgeflag | PG_RW | PG_V;
+		pa = xpmap_ptom(VM_PAGE_TO_PHYS(*ma)) | pgeflag | PG_RW | PG_V | PG_M | PG_A;
 
 		mclp->op = __HYPERVISOR_update_va_mapping;
-		mclp->args[0] = sva;
+		mclp->args[0] = va;
 		mclp->args[1] = (uint32_t)(pa & 0xffffffff);
 		mclp->args[2] = (uint32_t)(pa >> 32);
 		mclp->args[3] = (*pte & PG_V) ? UVMF_INVLPG|UVMF_ALL : 0;
 	
-		sva += PAGE_SIZE;
+		va += PAGE_SIZE;
 		pte++;
 		ma++;
 		mclp++;
@@ -1247,8 +1248,8 @@
 	}
 	if (mclcount) 
 		HYPERVISOR_multicall(mcl, mclcount);
+}
 
-}
 
 /*
  * This routine tears out page mappings from the
@@ -2732,9 +2733,8 @@
 	vm_page_t m, mpte;
 	vm_pindex_t diff, psize;
 	multicall_entry_t mcl[16];
-	multicall_entry_t *mclpstart, *mclp;
+	multicall_entry_t *mclp = mcl;
 	int count = 0;
-	mclpstart = mclp = mcl;
 	
 	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
 	psize = atop(end - start);
@@ -2749,13 +2749,13 @@
 		mclp++;
 		count++;
 		if (count == 16) {
-			HYPERVISOR_multicall(mclpstart, count);
-			mclp = mclpstart;
+			HYPERVISOR_multicall(mcl, count);
+			mclp = mcl;
 			count = 0;
 		}
 	}
 	if (count)
-		HYPERVISOR_multicall(mclpstart, count);
+		HYPERVISOR_multicall(mcl, count);
  	PMAP_UNLOCK(pmap);
 }
 


More information about the p4-projects mailing list