linux/arch/x86/include/asm
Ingo Molnar f180053694 x86, mm: dont use non-temporal stores in pagecache accesses
Impact: standardize IO on cached ops

On modern CPUs it is almost always a bad idea to use non-temporal stores,
as the regression in this commit has shown it:

  30d697f: x86: fix performance regression in write() syscall

The kernel simply has no good information about whether using non-temporal
stores is a good idea or not - and trying to add heuristics only increases
complexity and inserts fragility.

The regression on cached write()s took very long to be found - over two
years. So dont take any chances and let the hardware decide how it makes
use of its caches.

The only exception is drivers/gpu/drm/i915/i915_gem.c: there were we are
absolutely sure that another entity (the GPU) will pick up the dirty
data immediately and that the CPU will not touch that data before the
GPU will.

Also, keep the _nocache() primitives to make it easier for people to
experiment with these details. There may be more clear-cut cases where
non-cached copies can be used, outside of filemap.c.

Cc: Salman Qazi <sqazi@google.com>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-03-02 11:06:49 +01:00
..
mach-voyager
uv x86: UV: fix header struct usage 2009-02-11 17:17:29 -08:00
visws
xen x86, xen: short-circuit tests for dom0 2009-02-16 08:55:50 +01:00
a.out-core.h x86: add %gs accessors for x86_32 2009-02-10 00:41:58 +01:00
a.out.h
acpi.h x86: use early_ioremap in __acpi_map_table 2009-02-09 13:33:51 +01:00
agp.h
alternative-asm.h
alternative.h
amd_iommu.h
amd_iommu_types.h AMD IOMMU: add init code for statistic collection 2009-01-03 14:11:58 +01:00
apic.h x86, apic: rename 'genapic' to 'apic' 2009-02-17 17:53:57 +01:00
apicdef.h cpumask, irq: non-x86 build failures 2009-01-11 19:13:45 +01:00
apicnum.h irq: initialize nr_irqs based on nr_cpu_ids 2009-01-11 19:13:38 +01:00
apm.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
arch_hooks.h
asm.h
atomic.h
atomic_32.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
atomic_64.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
auxvec.h
bios_ebda.h
bitops.h x86, generic: mark complex bitops.h inlines as __always_inline 2009-01-13 18:56:30 +01:00
boot.h
bootparam.h
bug.h
bugs.h
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h
cacheflush.h
calgary.h
calling.h x86: document 64-bit and 32-bit function call convention ABI 2009-02-03 19:48:18 +01:00
checksum.h
checksum_32.h
checksum_64.h
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
cpu.h x86: generalize boot_cpu_id 2009-01-29 14:17:01 +01:00
cpufeature.h x86: add clflush before monitor for Intel 7400 series 2009-02-09 11:15:15 +01:00
cpumask.h x86: move setup_cpu_local_masks() 2009-01-27 12:56:47 +09:00
cputime.h
current.h x86-64: Move current task from PDA to per-cpu and consolidate with 32-bit. 2009-01-19 00:38:58 +09:00
debugreg.h
delay.h
desc.h
desc_defs.h
device.h
div64.h
dma-mapping.h Documentation: move DMA-mapping.txt to Doc/PCI/ 2009-01-29 18:19:29 -08:00
dma.h
dmi.h
do_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
ds.h
dwarf2.h
e820.h headers_check fix: x86, e820.h 2009-01-31 00:16:22 +05:30
edac.h
efi.h
elf.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
emergency-restart.h
entry_arch.h x86: replace CONFIG_X86_SMP with CONFIG_SMP 2009-01-29 14:17:00 +01:00
errno.h
fb.h
fcntl.h
fixmap.h
fixmap_32.h x86: use early_ioremap in __acpi_map_table 2009-02-09 13:33:51 +01:00
fixmap_64.h x86: use early_ioremap in __acpi_map_table 2009-02-09 13:33:51 +01:00
floppy.h
frame.h
ftrace.h
futex.h
gart.h
genapic.h x86, apic: merge genapic.h into apic.h 2009-02-17 17:52:43 +01:00
geode.h
gpio.h
hardirq.h x86: make irq_cpustat_t fields conditional 2009-01-23 11:03:32 +09:00
highmem.h
hpet.h
hugetlb.h
hw_irq.h xen: expose enable_IO_APIC for 32-bit 2009-02-09 14:04:56 -08:00
hypertransport.h
hypervisor.h
i387.h
i8253.h
i8259.h
ia32.h
ia32_unistd.h
idle.h
intel_arch_perfmon.h
io.h x86: truncate ISA addresses to unsigned int 2009-02-17 13:01:51 -08:00
io_32.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_64.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
io_apic.h x86: unstatic ioapic entry funcs 2009-02-09 14:04:31 -08:00
ioctl.h
ioctls.h
iomap.h
iommu.h
ipcbuf.h
ipi.h x86, apic: remove duplicate asm/apic.h inclusions 2009-02-17 17:52:44 +01:00
irq.h x86: unify do_IRQ() 2009-02-09 12:16:05 +01:00
irq_regs.h x86: merge irq_regs.h 2009-01-21 17:26:06 +09:00
irq_remapping.h
irq_vectors.h x86: invalid_vm86_irq -- use predefined macros 2009-02-24 18:08:39 +01:00
irqflags.h
ist.h
k8.h
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h
kexec.h x86: kexec: Use one page table in x86_64 machine_kexec 2009-02-03 18:29:18 -08:00
kgdb.h
kmap_types.h
kprobes.h
kvm.h KVM: Avoid using CONFIG_ in userspace visible headers 2009-02-15 02:47:35 +02:00
kvm_host.h KVM: change KVM to use IOMMU API 2009-01-03 14:11:07 +01:00
kvm_para.h
kvm_x86_emulate.h KVM: x86 emulator: add Src2 decode set 2008-12-31 16:55:42 +02:00
ldt.h
lguest.h x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids 2009-01-03 19:00:55 +01:00
lguest_hcall.h
linkage.h x86: linkage - get rid of _X86 macros 2009-02-19 17:12:59 +01:00
local.h
mach_timer.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
mach_traps.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
math_emu.h x86: fix math_emu register frame access 2009-02-10 00:39:14 +01:00
mc146818rtc.h
mca.h
mca_dma.h
mce.h headers_check fix: x86, mce.h 2009-01-31 00:17:13 +05:30
microcode.h
mman.h
mmconfig.h
mmu.h
mmu_context.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
mmx.h
mmzone.h
mmzone_32.h mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
mmzone_64.h mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
module.h
mpspec.h x86, numaq_32: clean up, misc 2009-02-17 17:53:54 +01:00
mpspec_def.h x86: rename all fields of mpf_intel mpf_X to X 2009-01-08 15:37:37 +01:00
msgbuf.h
msidef.h
msr-index.h x86: add MSR_IA32_MISC_ENABLE bits to <asm/msr-index.h> 2009-01-21 15:13:53 -08:00
msr.h
mtrr.h headers_check fix: x86, mtrr.h 2009-01-31 00:17:39 +05:30
mutex.h
mutex_32.h
mutex_64.h
nmi.h
nops.h
numa.h
numa_32.h
numa_64.h
numaq.h x86, numaq: cleanups 2009-02-05 22:30:14 +01:00
olpc.h
page.h x86 headers: include linux/types.h 2009-02-13 13:23:02 +01:00
page_32.h x86 headers: protect page_32.h via __ASSEMBLY__ 2009-02-13 13:36:47 +01:00
page_32_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
page_64.h x86: create _types.h counterparts for page*.h 2009-02-11 14:54:09 -08:00
page_64_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
page_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
param.h
paravirt.h Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-02-17 14:27:39 -08:00
parport.h
pat.h x86: handle PAT more like other CPU features 2009-01-23 18:07:45 -08:00
pci-direct.h
pci-functions.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
pci.h
pci_32.h
pci_64.h
pci_x86.h
percpu.h x86: use linker to offset symbols by __per_cpu_load 2009-02-09 10:30:30 +01:00
pgalloc.h x86, mm: fix pte_free() 2009-01-23 18:42:06 +01:00
pgtable-2level.h x86: unify pte_none 2009-02-06 12:26:08 -08:00
pgtable-2level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable-3level.h x86: unify pud_none 2009-02-06 12:31:51 -08:00
pgtable-3level_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable.h x86 headers: remove duplicate pud_large() definition 2009-02-13 13:15:55 +01:00
pgtable_32.h x86: Split pgtable_32.h into pgtable_32.h and pgtable_32_types.h 2009-02-11 14:54:09 -08:00
pgtable_32_types.h x86: Split pgtable_32.h into pgtable_32.h and pgtable_32_types.h 2009-02-11 14:54:09 -08:00
pgtable_64.h Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/header-fixes', 'x86/headers' and 'x86/minor-fixes' into x86/core 2009-02-13 09:46:36 +01:00
pgtable_64_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
pgtable_types.h x86: move more pagetable-related definitions into pgtable*.h 2009-02-13 11:35:01 -08:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h headers_check fix: x86, prctl.h 2009-02-02 23:27:09 +05:30
processor-cyrix.h
processor-flags.h
processor.h x86, mm: rename TASK_SIZE64 => TASK_SIZE_MAX 2009-02-21 00:09:44 +01:00
proto.h x86/Voyager: remove X86_BIOS_REBOOT Kconfig quirk 2009-01-29 14:17:03 +01:00
ptrace-abi.h headers_check fix: x86, ptrace-abi.h 2009-01-31 00:18:03 +05:30
ptrace.h x86: make lazy %gs optional on x86_32 2009-02-10 00:42:00 +01:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h x86, rdc321x: remove/move leftover files 2009-01-18 19:39:18 +01:00
reboot.h
reboot_fixups.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h
segment.h x86: implement x86_32 stack protector 2009-02-10 00:42:01 +01:00
sembuf.h
serial.h
setup.h x86, apic: rename 'genapic' to 'apic' 2009-02-17 17:53:57 +01:00
setup_arch.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
shmbuf.h
shmparam.h
sigcontext.h headers_check fix: x86, sigcontext.h 2009-01-31 00:18:30 +05:30
sigcontext32.h headers_check fix: x86, sigcontext32.h 2009-01-31 00:18:58 +05:30
sigframe.h
siginfo.h
signal.h
smp.h x86: remove mach_apic.h 2009-01-29 14:16:42 +01:00
smpboot_hooks.h x86: move mach-default/*.h files to asm/ 2009-01-29 14:16:51 +01:00
socket.h
sockios.h
sparsemem.h
spinlock.h Merge branch 'linus' into x86/apic 2009-02-13 09:44:22 +01:00
spinlock_types.h
srat.h
stackprotector.h x86: fix x86_32 stack protector bugs 2009-02-11 11:33:49 +01:00
stacktrace.h
stat.h
statfs.h
string.h
string_32.h
string_64.h
suspend.h
suspend_32.h
suspend_64.h
svm.h KVM: SVM: move svm.h to include/asm 2008-12-31 16:52:28 +02:00
swab.h headers_check fix: x86, swab.h 2009-01-31 00:19:32 +05:30
swiotlb.h
sync_bitops.h
sys_ia32.h
syscall.h
syscalls.h x86: syscalls.h: remove asmlinkage from declaration of sys_rt_sigreturn() 2009-02-19 12:18:54 +01:00
system.h Merge branch 'core/percpu' into x86/core 2009-02-13 09:45:09 +01:00
system_64.h
tce.h
termbits.h
termios.h
therm_throt.h
thread_info.h Merge branch 'x86/uaccess' into core/percpu 2009-02-10 00:40:48 +01:00
time.h
timer.h
timex.h x86: use standard PIT frequency 2009-01-25 16:57:47 +01:00
tlb.h
tlbflush.h x86-64: Move TLB state from PDA to per-cpu and consolidate with 32-bit. 2009-01-19 00:38:57 +09:00
topology.h x86: move 64-bit NUMA code 2009-01-27 12:56:47 +09:00
trampoline.h x86: load pointer to pda into %gs while brining up a CPU 2009-01-16 14:19:26 +01:00
traps.h x86: use pt_regs pointer in do_device_not_available() 2009-02-11 12:40:44 +01:00
tsc.h
types.h
uaccess.h x86: uaccess: use errret as error value in __put_user_size() 2009-02-04 17:28:21 -08:00
uaccess_32.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
uaccess_64.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
ucontext.h
unaligned.h
unistd.h
unistd_32.h
unistd_64.h
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h
vic.h
virtext.h x86: cpu_emergency_svm_disable() function 2008-12-31 16:52:30 +02:00
vm86.h
vmi.h
vmi_time.h
vmware.h
vmx.h KVM: VMX: move ASM_VMX_* definitions from asm/kvm_host.h to asm/vmx.h 2008-12-31 16:52:28 +02:00
voyager.h x86, voyager: move Voyager-specific defines to voyager.h 2009-01-31 04:21:21 +01:00
vsyscall.h
xcr.h
xor.h
xor_32.h
xor_64.h
xsave.h