linux/arch
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
..
alpha Merge branch 'x86/urgent' into x86/core 2009-02-20 17:40:43 +01:00
arm Merge branch 'x86/urgent' into x86/core 2009-02-20 17:40:43 +01:00
avr32 Merge branch 'x86/urgent' into x86/core 2009-02-20 17:40:43 +01:00
blackfin Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
cris Merge branch 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2009-01-14 19:58:40 -08:00
frv FRV: in_interrupt() requires #inclusion of linux/hardirq.h not asm/hardirq.h now 2009-02-09 08:51:35 -08:00
h8300 headers_check fix: h8300, swab.h 2009-02-01 11:01:24 +05:30
ia64 Merge branch 'x86/urgent' into x86/core 2009-02-20 17:40:43 +01:00
m32r eeprom: More consistent symbol names 2009-01-26 21:19:57 +01:00
m68k m68knommu: remove the no longer used PCI support option 2009-01-27 16:42:02 +10:00
m68knommu m68knommu: fix 5329 ColdFire periphal addressing 2009-01-27 16:42:03 +10:00
mips Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
mn10300 Merge branch 'x86/mm' into core/percpu 2009-01-21 10:39:51 +01:00
parisc Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
powerpc Merge branch 'x86/urgent' into x86/core 2009-02-20 17:40:43 +01:00
s390 [S390] fix "mem=" handling in case of standby memory 2009-02-19 15:19:19 +01:00
sh sh: Fix up T-bit error handling in SH-4A mutex fastpath. 2009-01-29 11:56:03 +09:00
sparc Merge branch 'linus' into x86/apic 2009-02-13 09:44:22 +01:00
um mm: invoke oom-killer from page fault 2009-01-06 15:58:58 -08:00
x86 x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
xtensa headers_check fix: xtensa, swab.h 2009-02-01 11:01:30 +05:30
.gitignore
Kconfig [CVE-2009-0029] System call wrapper infrastructure 2009-01-14 14:15:16 +01:00