linux-uconsole/arch
Andre Przywara 5e3fe67e02 x86, amd: Disable way access filter on Piledriver CPUs
commit 2bbf0a1427 upstream.

The Way Access Filter in recent AMD CPUs may hurt the performance of
some workloads, caused by aliasing issues in the L1 cache.
This patch disables it on the affected CPUs.

The issue is similar to that one of last year:
http://lkml.indiana.edu/hypermail/linux/kernel/1107.3/00041.html
This new patch does not replace the old one, we just need another
quirk for newer CPUs.

The performance penalty without the patch depends on the
circumstances, but is a bit less than the last year's 3%.

The workloads affected would be those that access code from the same
physical page under different virtual addresses, so different
processes using the same libraries with ASLR or multiple instances of
PIE-binaries. The code needs to be accessed simultaneously from both
cores of the same compute unit.

More details can be found here:
http://developer.amd.com/Assets/SharedL1InstructionCacheonAMD15hCPU.pdf

CPUs affected are anything with the core known as Piledriver.
That includes the new parts of the AMD A-Series (aka Trinity) and the
just released new CPUs of the FX-Series (aka Vishera).
The model numbering is a bit odd here: FX CPUs have model 2,
A-Series has model 10h, with possible extensions to 1Fh. Hence the
range of model ids.

Signed-off-by: Andre Przywara <osp@andrep.de>
Link: http://lkml.kernel.org/r/1351700450-9277-1-git-send-email-osp@andrep.de
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: CAI Qian <caiqian@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-17 08:43:58 -08:00
..
alpha Redefine ATOMIC_INIT and ATOMIC64_INIT to drop the casts 2012-10-02 09:47:25 -07:00
arm ARM: missing ->mmap_sem around find_vma() in swp_emulate.c 2013-01-11 09:03:48 -08:00
avr32 avr32: select generic atomic64_t support 2012-03-12 10:32:57 -07:00
blackfin rtc: fix build warnings in defconfigs 2011-06-15 20:04:02 -07:00
cris CRIS: fix I/O macros 2013-01-11 09:03:49 -08:00
frv Merge branch 'setns' 2011-05-28 10:51:01 -07:00
h8300 Merge branch 'setns' 2011-05-28 10:51:01 -07:00
ia64 random: remove rand_initialize_irq() 2012-08-15 12:04:28 -07:00
m32r Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
m68k m68k: fix sigset_t accessor functions 2012-11-26 11:34:35 -08:00
microblaze Merge branch 'setns' 2011-05-28 10:51:01 -07:00
mips kbuild: Fix gcc -x syntax 2012-11-26 11:34:37 -08:00
mn10300 mn10300: only add -mmem-funcs to KBUILD_CFLAGS if gcc supports it 2012-10-13 05:28:02 +09:00
parisc PARISC: fix user-triggerable panic on parisc 2012-12-03 12:59:13 -08:00
powerpc powerpc/vdso: Remove redundant locking in update_vsyscall_tz() 2013-01-17 08:43:53 -08:00
s390 s390/gup: add missing TASK_SIZE check to get_user_pages_fast() 2012-11-26 11:34:34 -08:00
score score: fix off-by-one index into syscall table 2012-01-25 17:25:04 -08:00
sh oprofile, arm/sh: Fix oprofile_arch_exit() linkage issue 2012-01-06 14:13:57 -08:00
sparc sparc: huge_ptep_set_* functions need to call set_huge_pte_at() 2013-01-11 09:03:47 -08:00
tile arch/tile: avoid generating .eh_frame information in modules 2012-10-28 10:02:10 -07:00
um um: Implement a custom pte_same() function 2012-06-01 15:12:55 +08:00
unicore32 unicore32: using generic-y format for one line asm-generic files 2011-06-09 16:29:52 +08:00
x86 x86, amd: Disable way access filter on Piledriver CPUs 2013-01-17 08:43:58 -08:00
xtensa xtensa: prevent arbitrary read in ptrace 2011-08-04 21:58:39 -07:00
.gitignore
Kconfig mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00