Re: [PATCH 1/4] x86, amd: Avoid cache aliasing penalties on AMDfamily 15h

From: Greg KH
Date: Fri Nov 04 2011 - 11:26:30 EST


On Fri, Nov 04, 2011 at 12:26:32PM +0100, Borislav Petkov wrote:
> From: Borislav Petkov <borislav.petkov@xxxxxxx>
>
> Upstream commit: dfb09f9b7ab03fd367740e541a5caf830ed56726
>
> 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@xxxxxxx>
> Link: http://lkml.kernel.org/r/1312550110-24160-2-git-send-email-bp@xxxxxxxxx
> Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx>
> ---
> Documentation/kernel-parameters.txt | 13 ++++++
> arch/x86/include/asm/elf.h | 31 +++++++++++++
> arch/x86/kernel/cpu/amd.c | 13 ++++++
> arch/x86/kernel/sys_x86_64.c | 81 +++++++++++++++++++++++++++++++++-
> arch/x86/mm/mmap.c | 15 ------
> arch/x86/vdso/vma.c | 9 ++++
> 6 files changed, 144 insertions(+), 18 deletions(-)

I really feel nervous adding this patch to the -stable tree(s). It's
bigger than "just a bugfix" and it adds new functionality.

I'm aware that it is needed for your new hardware, which is great, but
it doesn't really follow the Documentation/stable_kernel_rules.txt
requirements, does it?

I need an ACK from the x86 maintainers before I'm going to be
comfortable adding this, and then the other, patches in this series.

Peter, Ingo, Thomas, your opinions?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/