linux/arch/x86/kernel/cpu
Borislav Petkov dfb09f9b7a x86, amd: Avoid cache aliasing penalties on AMD family 15h
This patch provides performance tuning for the "Bulldozer" CPU. With its
shared instruction cache there is a chance of generating an excessive
number of cache cross-invalidates when running specific workloads on the
cores of a compute module.

This excessive amount of cross-invalidations can be observed if cache
lines backed by shared physical memory alias in bits [14:12] of their
virtual addresses, as those bits are used for the index generation.

This patch addresses the issue by clearing all the bits in the [14:12]
slice of the file mapping's virtual address at generation time, thus
forcing those bits the same for all mappings of a single shared library
across processes and, in doing so, avoids instruction cache aliases.

It also adds the command line option "align_va_addr=(32|64|on|off)" with
which virtual address alignment can be enabled for 32-bit or 64-bit x86
individually, or both, or be completely disabled.

This change leaves virtual region address allocation on other families
and/or vendors unaffected.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Link: http://lkml.kernel.org/r/1312550110-24160-2-git-send-email-bp@amd64.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-08-05 12:26:44 -07:00
..
mcheck Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-05-19 18:07:31 -07:00
mtrr x86, mtrr, pat: Fix one cpu getting out of sync during resume 2011-03-29 16:17:42 -07:00
.gitignore
Makefile [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
amd.c x86, amd: Avoid cache aliasing penalties on AMD family 15h 2011-08-05 12:26:44 -07:00
bugs.c x86 idle: deprecate "no-hlt" cmdline param 2011-05-29 03:39:16 -04:00
bugs_64.c x86/cpu: Clean up various files a bit 2009-07-11 11:24:09 +02:00
centaur.c x86, cpu: mv display_cacheinfo -> cpu_detect_cache_sizes 2009-11-23 11:59:53 -08:00
common.c Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6 2011-05-29 11:18:09 -07:00
cpu.h Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-10-21 13:18:36 -07:00
cyrix.c x86, cpu: mv display_cacheinfo -> cpu_detect_cache_sizes 2009-11-23 11:59:53 -08:00
hypervisor.c Introduce CONFIG_XEN_PVHVM compile option 2010-07-29 11:11:33 -07:00
intel.c x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message 2011-07-15 15:13:55 -07:00
intel_cacheinfo.c x86, AMD, cacheinfo: Fix L3 cache index disable checks 2011-05-16 11:24:27 -07:00
mkcapflags.pl
mshyperv.c x86: Export the symbol ms_hyperv 2010-07-08 14:12:03 -07:00
perf_event.c x86: Remove warning and warning_symbol from struct stacktrace_ops 2011-05-12 15:31:28 +02:00
perf_event_amd.c perf, x86: Add new stalled cycles events for Intel and AMD CPUs 2011-04-29 14:24:15 +02:00
perf_event_intel.c Merge commit 'v2.6.39-rc7' into perf/core 2011-05-10 17:05:45 +02:00
perf_event_intel_ds.c perf, x86: Use INTEL_*_CONSTRAINT() for all PEBS event constraints 2011-03-16 14:04:12 +01:00
perf_event_intel_lbr.c perf, x86: Clean up debugctlmsr bit definitions 2010-03-26 09:41:03 +01:00
perf_event_p4.c Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core 2011-05-01 19:09:39 +02:00
perf_event_p6.c perf, x86: Store perfctr msr addresses in config_base/event_base 2011-02-16 13:30:52 +01:00
perfctr-watchdog.c perf, x86: Add new AMD family 15h msrs to perfctr reservation code 2011-02-16 13:30:50 +01:00
powerflags.c
proc.c Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-14 07:57:32 -07:00
scattered.c Merge branch 'x86-amd-nb-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-10-21 13:01:08 -07:00
sched.c sched: x86: Name old_perf in a unique way 2009-09-16 11:21:07 +02:00
topology.c x86, cpu: Split addon_cpuid_features.c 2010-07-19 19:02:41 -07:00
transmeta.c x86, cpu: mv display_cacheinfo -> cpu_detect_cache_sizes 2009-11-23 11:59:53 -08:00
umc.c x86: move various CPU initialization objects into .cpuinit.rodata 2009-03-12 13:13:07 +01:00
vmware.c x86: Fix common misspellings 2011-03-18 10:39:30 +01:00