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