svn commit: r255684 - projects/bhyve_npt_pmap/sys/amd64/amd64
Neel Natu
neel at FreeBSD.org
Thu Sep 19 01:55:58 UTC 2013
Author: neel
Date: Thu Sep 19 01:55:58 2013
New Revision: 255684
URL: http://svnweb.freebsd.org/changeset/base/255684
Log:
If the page fault was triggered by reserved bits being set in the page table
entry then panic immediately.
Requested by: kib@
Modified:
projects/bhyve_npt_pmap/sys/amd64/amd64/trap.c
Modified: projects/bhyve_npt_pmap/sys/amd64/amd64/trap.c
==============================================================================
--- projects/bhyve_npt_pmap/sys/amd64/amd64/trap.c Thu Sep 19 01:12:59 2013 (r255683)
+++ projects/bhyve_npt_pmap/sys/amd64/amd64/trap.c Thu Sep 19 01:55:58 2013 (r255684)
@@ -734,6 +734,14 @@ trap_pfault(frame, usermode)
}
/*
+ * If the trap was caused by errant bits in the PTE then panic.
+ */
+ if (frame->tf_err & PGEX_RSV) {
+ trap_fatal(frame, eva);
+ return (-1);
+ }
+
+ /*
* PGEX_I is defined only if the execute disable bit capability is
* supported and enabled.
*/
@@ -822,10 +830,11 @@ trap_fatal(frame, eva)
#endif
if (type == T_PAGEFLT) {
printf("fault virtual address = 0x%lx\n", eva);
- printf("fault code = %s %s %s, %s\n",
+ printf("fault code = %s %s %s%s, %s\n",
code & PGEX_U ? "user" : "supervisor",
code & PGEX_W ? "write" : "read",
code & PGEX_I ? "instruction" : "data",
+ code & PGEX_RSV ? " rsv" : "",
code & PGEX_P ? "protection violation" : "page not present");
}
printf("instruction pointer = 0x%lx:0x%lx\n",
More information about the svn-src-projects
mailing list