kernel-fxtec-pro1x/arch/x86
Andi Kleen 8346ea17aa x86: split large page mapping for AMD TSEG
On AMD SMM protected memory is part of the address map, but handled
internally like an MTRR. That leads to large pages getting split
internally which has some performance implications. Check for the
AMD TSEG MSR and split the large page mapping on that area
explicitely if it is part of the direct mapping.

There is also SMM ASEG, but it is in the first 1MB and already covered by
the earlier split first page patch.

Idea for this came from an earlier patch by Andreas Herrmann

On a RevF dual Socket Opteron system kernbench shows a clear
improvement from this:
(together with the earlier patches in this series, especially the
split first 2MB patch)

[lower is better]
              no split stddev         split  stddev    delta
Elapsed Time   87.146 (0.727516)     84.296 (1.09098)  -3.2%
User Time     274.537 (4.05226)     273.692 (3.34344)  -0.3%
System Time    34.907 (0.42492)      34.508 (0.26832)  -1.1%
Percent CPU   322.5   (38.3007)     326.5   (44.5128)  +1.2%

=> About 3.2% improvement in elapsed time for kernbench.

With GB pages on AMD Fam1h the impact of splitting is much higher of course,
since it would split two full GB pages (together with the first
1MB split patch) instead of two 2MB pages.  I could not benchmark
a clear difference in kernbench on gbpages, so I kept it disabled
for that case

That was only limited benchmarking of course, so if someone
was interested in running more tests for the gbpages case
that could be revisited (contributions welcome)

I didn't bother implementing this for 32bit because it is very
unlikely the 32bit lowmem mapping overlaps into the TSEG near 4GB
and the 2MB low split is already handled for both.

[ mingo@elte.hu: do it on gbpages kernels too, there's no clear reason
                 why it shouldnt help there. ]

Signed-off-by: Andi Kleen <ak@suse.de>
Acked-by: andreas.herrmann3@amd.com
Cc: mingo@elte.hu
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-04-17 17:41:30 +02:00
..
boot x86: coding style fixes to arch/x86/boot/cpucheck.c 2008-04-17 17:40:50 +02:00
configs x86, core: remove CONFIG_FORCED_INLINING 2008-02-09 23:24:09 +01:00
crypto
ia32 x86: sys32_execve PT_DTRACE 2008-04-17 17:41:13 +02:00
kernel x86: split large page mapping for AMD TSEG 2008-04-17 17:41:30 +02:00
kvm KVM: MMU: Fix memory leak on guest demand faults 2008-03-25 10:22:17 +02:00
lguest x86: replace remaining __FUNCTION__ occurances 2008-04-17 17:40:57 +02:00
lib x86: coding style fixes to arch/x86/lib/usercopy_32.c 2008-04-17 17:40:51 +02:00
mach-default
mach-es7000
mach-generic x86: coding style fixes to arch/x86/mach-generic/bigsmp.c 2008-04-17 17:40:48 +02:00
mach-rdc321x x86, rdc321x: remove watchdog file 2008-04-17 17:40:50 +02:00
mach-visws x86/visws: fix printk format warnings 2008-03-21 17:06:15 +01:00
mach-voyager x86: move stack_start to smp.h 2008-04-17 17:41:02 +02:00
math-emu i386: arch/x86/math-emu/reg_ld_str.c: fix warning 2008-04-17 17:41:21 +02:00
mm x86: don't use large pages to map the first 2/4MB of memory 2008-04-17 17:41:30 +02:00
oprofile x86: coding style fixes to arch/x86/oprofile/nmi_timer_int.c 2008-04-17 17:40:50 +02:00
pci x86: PAT bug fix for attribute type check after reserve_memtype 2008-04-17 17:41:20 +02:00
power x86: coding style fixes to arch/x86/power/cpu_32.c 2008-04-17 17:40:50 +02:00
vdso x86: include mach_apic.h in smpboot_64.c and smpboot.c 2008-04-17 17:41:02 +02:00
video
xen xen: use iret instruction all the time 2008-04-17 17:40:51 +02:00
Kconfig x86: memtest bootparam 2008-04-17 17:41:21 +02:00
Kconfig.cpu x86: a P4 is a P6 not an i486 2008-03-04 11:55:34 -08:00
Kconfig.debug x86: add gbpages switches 2008-04-17 17:40:45 +02:00
Makefile x86: add subarch support (for headers) to x86_64 2008-04-17 17:41:01 +02:00
Makefile_32.cpu