freebsd-skq/sys
Alan Cox 5730afc9b6 Handle spurious page faults that may occur in no-fault sections of the
kernel.

When access restrictions are added to a page table entry, we flush the
corresponding virtual address mapping from the TLB.  In contrast, when
access restrictions are removed from a page table entry, we do not
flush the virtual address mapping from the TLB.  This is exactly as
recommended in AMD's documentation.  In effect, when access
restrictions are removed from a page table entry, AMD's MMUs will
transparently refresh a stale TLB entry.  In short, this saves us from
having to perform potentially costly TLB flushes.  In contrast,
Intel's MMUs are allowed to generate a spurious page fault based upon
the stale TLB entry.  Usually, such spurious page faults are handled
by vm_fault() without incident.  However, when we are executing
no-fault sections of the kernel, we are not allowed to execute
vm_fault().  This change introduces special-case handling for spurious
page faults that occur in no-fault sections of the kernel.

In collaboration with:	kib
Tested by:		gibbs (an earlier version)

I would also like to acknowledge Hiroki Sato's assistance in
diagnosing this problem.

MFC after:	1 week
2012-03-22 04:52:51 +00:00
..
amd64 Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
arm Remove pty(4) from our kernel configurations. 2012-03-21 08:38:42 +00:00
boot Declare the CRC lookup-tables const as they hardly should change at 2012-03-21 20:55:21 +00:00
bsm
cam Add LUN resizing to CTL. Also make it possible to explicitly set 2012-03-06 13:43:57 +00:00
cddl Add dependencies onto acl_posix1e and acl_nfs4. 2012-03-13 20:29:04 +00:00
compat Remove some unnecessary includes. 2012-03-18 19:15:11 +00:00
conf Exclude devices which are mutually exclusive with ATA_CAM. For better 2012-03-21 08:50:47 +00:00
contrib Update the firmware to version 0.236 2012-03-21 19:09:52 +00:00
crypto Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
ddb Use strchr() and strrchr(). 2012-01-02 12:12:10 +00:00
dev Load the firmware during init not attach, as a root filesystem might 2012-03-21 19:08:44 +00:00
fs Add sysctl vfs.nfs.nfs_keep_dirty_on_error to switch the nfs client 2012-03-17 23:03:20 +00:00
gdb kern cons: introduce infrastructure for console grabbing by kernel 2011-12-17 15:08:43 +00:00
geom Add CTLFLAG_TUN to sysctls. 2012-03-19 13:21:10 +00:00
gnu/fs Remove fifo.h. The only used function declaration from the header is 2012-03-11 12:19:58 +00:00
i386 Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
ia64 Remove pty(4) from our kernel configurations. 2012-03-21 08:38:42 +00:00
isa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
kern Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
kgssapi
libkern Declare the CRC lookup-tables const as they hardly should change at 2012-03-21 20:55:21 +00:00
mips o) Don't keep drive parameters in a global, put them in the softc. 2012-03-21 10:27:12 +00:00
modules Connect geom_part_ldm module to the build. 2012-03-19 13:15:48 +00:00
net Retire the IF_ADDR_LOCK() and IF_ADDR_UNLOCK() compat macros from HEAD. 2012-03-19 21:09:12 +00:00
net80211 Re-commit this - store the alq payload in network order. 2012-03-21 03:19:50 +00:00
netatalk Fix typos 2012-02-28 15:07:05 +00:00
netgraph Use rt_numfibs variable instead of compile-time RT_NUMFIBS. 2012-03-13 11:08:40 +00:00
netinet Hide a few declarations from userland (including `struct inpcbgroup'). This 2012-03-17 21:51:39 +00:00
netinet6 in6_pcblookup_local() still can return a pcb with NULL 2012-03-21 08:43:38 +00:00
netipsec Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
netipx Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
netnatm
netncp
netsmb Add unicode support to msdosfs and smbfs; original pathes from imura, 2011-11-18 03:05:20 +00:00
nfs Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
nfsclient Remove fifo.h. The only used function declaration from the header is 2012-03-11 12:19:58 +00:00
nfsserver Honor NFSv3 commit call (RFC 1813, Section 3.3.21) where when count is 0, 2011-12-15 02:26:53 +00:00
nlm jwd@ reported a problem via email to freebsd-fs@ on Aug 25, 2011 2012-01-31 02:11:05 +00:00
ofed Fix build of OFED bits with debugging options enabled. 2012-03-19 19:53:53 +00:00
opencrypto
pc98 Remove pty(4) from our kernel configurations. 2012-03-21 08:38:42 +00:00
pci Use correct Config registers for RTL8139 family. Unlike RTL8168 and 2012-02-25 04:54:51 +00:00
powerpc Remove pty(4) from our kernel configurations. 2012-03-21 08:38:42 +00:00
rpc
security Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
sparc64 Remove pty(4) from our kernel configurations. 2012-03-21 08:38:42 +00:00
sys Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
teken
tools Make vnode_if.awk parse vnode operations with underscores, like VOP_FOO_BAR. 2012-02-21 19:35:59 +00:00
ufs Supply boolean as the second argument to ffs_update(), and not a 2012-03-13 22:04:27 +00:00
vm Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
x86 Copy amd64 sysarch.h to x86 and merge with i386 sysarch.h. Replace 2012-03-19 21:57:31 +00:00
xdr
xen blkif interface comment cleanups. No functional changes 2012-02-29 17:47:01 +00:00
Makefile Add sys/ofed to the 'make cscope' target. 2012-03-20 18:05:15 +00:00