freebsd-skq/sys/i386/include
alc e02fd6b842 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
..
pc
xen Fix the netback driver build for i386. 2012-02-02 17:54:35 +00:00
_align.h Merge amd64/i386 _align.h by aligning on the size of register_t (copied 2010-11-26 10:59:20 +00:00
_bus.h
_inttypes.h Copy powerpc/include/_inttypes.h to x86 and replace i386/amd64/pc98 2011-01-08 18:09:48 +00:00
_limits.h Copy amd64 _limits.h to x86 and merge with i386 _limits.h. Replace 2012-02-28 18:24:28 +00:00
_stdint.h Copy amd64 _stdint.h to x86 and merge with i386 _stdint.h. Replace 2012-02-28 18:38:33 +00:00
_types.h Copy amd64 _types.h to x86 and merge with i386 _types.h. Replace existing 2012-02-28 18:15:28 +00:00
acpica_machdep.h Extract the code to find and map the MADT ACPI table during early kernel 2009-09-23 15:42:35 +00:00
apicvar.h Remove completely duplicate '#ifdef XEN' section. 2012-02-27 17:30:21 +00:00
apm_bios.h Move identical copies of apm_bios.h to sys/x86/include, replace them with 2010-11-11 19:36:21 +00:00
apm_segments.h
asm.h Also import WEAK_ALIAS() from the MIPS code. 2012-01-05 08:51:06 +00:00
asmacros.h
atomic.h Implement atomic_load_acq_64(9) and atomic_store_rel_64(9) for i386. These 2011-04-06 23:59:59 +00:00
bootinfo.h Add EFI boot info fields. 2010-04-07 18:52:51 +00:00
bus_dma.h
bus.h Merge amd64 and i386 bus.h and move the resulting header to x86. Replace 2010-12-20 16:39:43 +00:00
clock.h MFC 2011-05-09 18:53:13 +00:00
cpu.h Use cpu_ticks() for get_cyclecount(9) rather than checking existence of TSC 2011-04-04 22:56:33 +00:00
cpufunc.h Correct cpu_monitor() and cpu_mwait() for amd64. These instructions take 2011-07-05 18:42:10 +00:00
cputypes.h
cserial.h
db_machdep.h
elan_mmcr.h
elf.h Add AT_STACKPROT elf aux vector. Will be used to inform rtld about the 2011-01-07 14:22:34 +00:00
endian.h Copy amd64 endian.h to x86 and merge with i386 endian.h. Replace 2012-02-28 19:39:54 +00:00
exec.h
float.h Copy amd64 float.h to x86 and merge with i386 float.h. Replace 2012-03-04 14:00:32 +00:00
floatingpoint.h
frame.h
gdb_machdep.h
ieeefp.h People porting FreeBSD to new architectures ought not have to 2011-10-21 06:41:46 +00:00
if_wl_wavelan.h
in_cksum.h
intr_machdep.h Allow a native i386 kernel to be built with 'nodevice atpic'. Just as on 2012-03-09 19:42:48 +00:00
ioctl_bt848.h
ioctl_meteor.h
iodev.h - Extract the IODEV_PIO interface from ia64 and make it MI. 2010-04-28 15:38:01 +00:00
kdb.h
legacyvar.h
limits.h
md_var.h Remove unused i586 optimized bcopy/bzero/etc implementations that utilize 2010-06-23 10:40:28 +00:00
memdev.h Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
metadata.h
minidump.h
mp_watchdog.h
nexusvar.h
npx.h Move userland bits of i386 npx.h and amd64 fpu.h to x86 fpu.h. 2012-03-16 20:24:30 +00:00
param.h Add the possibility to specify from kernel configs MAXCPU value. 2011-07-19 00:37:24 +00:00
pcaudioio.h Convert files to UTF-8 2012-01-15 13:23:18 +00:00
pcb_ext.h
pcb.h Remove the support for int13 FPU exception reporting on i386. It is 2010-06-23 11:12:58 +00:00
pci_cfgreg.h Move {amd64,i386}/pci/pci_bus.c and {amd64,i386}/include/pci_cfgreg.h to 2011-06-22 21:04:13 +00:00
pcpu.h Make "options XENHVM" compile for i386, not just amd64 -- a largely 2011-01-04 14:49:54 +00:00
perfmon.h
pmap.h Commit the support for removing cpumask_t and replacing it directly with 2011-05-05 14:39:14 +00:00
pmc_mdep.h - Support for uncore counting events: one fixed PMC with the uncore 2010-04-02 13:23:49 +00:00
ppireg.h
privatespace.h
proc.h Handle spurious page faults that may occur in no-fault sections of the 2012-03-22 04:52:51 +00:00
profile.h Use intr_disable() and intr_restore() instead of frobbing the flags register 2010-10-25 15:28:03 +00:00
psl.h Copy i386 psl.h to x86 and replace amd64/i386/pc98 psl.h with stubs. 2012-03-19 21:29:57 +00:00
ptrace.h Copy amd64 ptrace.h to x86 and merge with i386 ptrace.h. Replace 2012-03-04 20:24:28 +00:00
reg.h Copy i386 reg.h to x86 and merge with amd64 reg.h. Replace i386/amd64/pc98 2012-03-18 19:06:38 +00:00
reloc.h
resource.h
runq.h
segments.h Move userland bits (and some common kernel bits) from amd64 and i386 2012-03-19 21:24:50 +00:00
setjmp.h Copy amd64 setjmp.h to x86 and replace amd64/i386/pc98 setjmp.h with stubs. 2012-02-28 22:17:52 +00:00
sf_buf.h Commit the support for removing cpumask_t and replacing it directly with 2011-05-05 14:39:14 +00:00
sigframe.h
signal.h Synchronize the struct sigcontext definitions on x86 with mcontext_t. 2012-01-30 07:51:52 +00:00
smapi.h
smp.h remove code for dynamic offlining/onlining of CPUs on x86 2011-06-08 08:12:15 +00:00
speaker.h
specialreg.h Copy i386 specialreg.h to x86 and merge with amd64 specialreg.h. Replace 2012-03-19 21:34:11 +00:00
stack.h
stdarg.h Copy amd64 stdarg.h to x86 and replace amd64/i386/pc98 stdarg.h with stubs. 2012-02-28 22:30:58 +00:00
sysarch.h Copy amd64 sysarch.h to x86 and merge with i386 sysarch.h. Replace 2012-03-19 21:57:31 +00:00
timerreg.h
trap.h Copy amd64 trap.h to x86 and replace amd64/i386/pc98 trap.h with stubs. 2012-03-04 14:12:57 +00:00
tss.h
ucontext.h Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
varargs.h
vm86.h Increase maximum number of page table entries per VM86 context from 8 to 24 2010-08-25 21:13:23 +00:00
vm.h
vmparam.h Avoid the possibility of integer overflow in the calculation of 2011-12-10 18:42:00 +00:00
xbox.h