socsvn commit: r269006 - soc2014/mihai/bhyve-icache-head/sys/amd64/vmm

mihai at FreeBSD.org mihai at FreeBSD.org
Tue Jun 3 13:36:20 UTC 2014


Author: mihai
Date: Tue Jun  3 13:36:19 2014
New Revision: 269006
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269006

Log:
  sys: amd64: vmm: vmm_instruction_cache.c: fix cached page

Modified:
  soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c

Modified: soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c
==============================================================================
--- soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c	Tue Jun  3 13:22:02 2014	(r269005)
+++ soc2014/mihai/bhyve-icache-head/sys/amd64/vmm/vmm_instruction_cache.c	Tue Jun  3 13:36:19 2014	(r269006)
@@ -195,8 +195,10 @@
 			if ((pte32 & PG_V) == 0)
 				goto error;
 
-			if (pte32 & PG_PS)
+			if (pte32 & PG_PS) {
+				vie_cached->pages_count--;
 				break;
+			}
 
 			ptpphys = pte32;
 		}
@@ -262,8 +264,10 @@
 		if (pte & PG_PS) {
 			if (pgsize > 1 * GB)
 				goto error;
-			else
+			else {
+				vie_cached->pages_count--;
 				break;
+			}
 		}
 
 		ptpphys = pte;
@@ -273,11 +277,12 @@
 	pte >>= ptpshift; pte <<= (ptpshift + 12); pte >>= 12;
 
 	vie_cached->pages_mask[vie_cached->pages_count] = (1 << ptpshift) - 1;
-	vie_cached->pages[vie_cached->pages_count++] = ptpphys;
+	vie_cached->pages[vie_cached->pages_count++] = pte;
 
 protect:
 	i=0;
 	for (i = 0; i < vie_cached->pages_count; i++) {
+//		printf("vm_map_protect %d, %lx -> %lx\n",i, vie_cached->pages[i], vie_cached->pages_mask[i]);
 		vm_map_protect(&(vm_get_vmspace(vm)->vm_map), vie_cached->pages[i],
 		    vie_cached->pages[i] + vie_cached->pages_mask[i] + 1,
 		    VM_PROT_READ | VM_PROT_EXECUTE, 0);


More information about the svn-soc-all mailing list