kernel_optimize_test/arch/powerpc/kernel
Anton Blanchard 30d0b36828 powerpc: Move 64bit VDSO to improve context switch performance
On 64bit applications the VDSO is the only thing in segment 0. Since the VDSO
is position independent we can remove the hint and let get_unmapped_area pick
an area. This will mean the vdso will be near other mmaps and will share
an SLB entry:

10000000-10001000 r-xp 00000000 08:06 5778459        /root/context_switch_64
10010000-10011000 r--p 00000000 08:06 5778459        /root/context_switch_64
10011000-10012000 rw-p 00001000 08:06 5778459        /root/context_switch_64
fffa92ae000-fffa92b0000 rw-p 00000000 00:00 0
fffa92b0000-fffa9453000 r-xp 00000000 08:06 4334051  /lib64/power6/libc-2.9.so
fffa9453000-fffa9462000 ---p 001a3000 08:06 4334051  /lib64/power6/libc-2.9.so
fffa9462000-fffa9466000 r--p 001a2000 08:06 4334051  /lib64/power6/libc-2.9.so
fffa9466000-fffa947c000 rw-p 001a6000 08:06 4334051  /lib64/power6/libc-2.9.so
fffa947c000-fffa9480000 rw-p 00000000 00:00 0
fffa9480000-fffa94a8000 r-xp 00000000 08:06 4333852  /lib64/ld-2.9.so
fffa94b3000-fffa94b4000 rw-p 00000000 00:00 0

fffa94b4000-fffa94b7000 r-xp 00000000 00:00 0        [vdso] <----- here I am

fffa94b7000-fffa94b8000 r--p 00027000 08:06 4333852  /lib64/ld-2.9.so
fffa94b8000-fffa94bb000 rw-p 00028000 08:06 4333852  /lib64/ld-2.9.so
fffa94bb000-fffa94bc000 rw-p 00000000 00:00 0
fffe4c10000-fffe4c25000 rw-p 00000000 00:00 0        [stack]

On a microbenchmark that bounces a token between two 64bit processes over pipes
and calls gettimeofday each iteration (to access the VDSO), our context switch
rate goes from 268k to 277k ctx switches/sec (tested on a 4GHz POWER6).

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2009-08-20 10:12:24 +10:00
..
vdso32 powerpc/mm: Introduce MMU features 2008-12-21 14:21:16 +11:00
vdso64 powerpc/mm: Introduce MMU features 2008-12-21 14:21:16 +11:00
.gitignore powerpc: Ignore generated vmlinux.lds in git 2008-10-07 14:26:18 +11:00
align.c powerpc: Keep track of emulated instructions 2009-05-21 15:44:26 +10:00
asm-offsets.c Merge commit 'origin/master' into next 2009-06-12 16:53:38 +10:00
audit.c
btext.c powerpc: Use the common ascii hex helpers 2008-08-20 16:34:57 +10:00
cacheinfo.c powerpc/cacheinfo: Rename cache_dir per-cpu variable 2009-01-13 14:48:02 +11:00
cacheinfo.h powerpc: Rewrite sysfs processor cache info code 2009-01-08 16:25:10 +11:00
clock.c
compat_audit.c
cpu_setup_6xx.S powerpc: Enable additional BAT registers in setup_745x_specifics() 2009-06-15 21:45:31 -05:00
cpu_setup_44x.S AMCC PPC 460SX redwood SoC platform initial framework 2009-02-14 14:41:29 -05:00
cpu_setup_fsl_booke.S powerpc/fsl-booke: Enable L1 cache on e500v1/e500v2/e500mc CPUs 2009-06-15 21:45:30 -05:00
cpu_setup_pa6t.S
cpu_setup_ppc970.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
cputable.c powerpc: Add 2.06 tlbie mnemonics 2009-05-21 15:44:21 +10:00
crash_dump.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
crash.c
dbell.c powerpc: Add support for using doorbells for SMP IPI 2009-02-23 15:53:03 +11:00
dma-iommu.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
dma-swiotlb.c powerpc: Add support for swiotlb on 32-bit 2009-06-09 16:49:18 +10:00
dma.c powerpc/dma: pci_set_dma_mask() shouldn't fail if mask fits in RAM 2009-08-10 16:36:38 +10:00
entry_32.S powerpc: Add irqtrace support for 32-bit powerpc 2009-06-26 14:37:27 +10:00
entry_64.S Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
exceptions-64s.S powerpc: Split exception handling out of head_64.S 2009-06-09 16:47:37 +10:00
firmware.c
fpu.S powerpc: Disable VSX or current process in giveup_fpu/altivec 2009-04-07 15:18:59 +10:00
ftrace.c Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 10:56:46 -07:00
head_8xx.S powerpc: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:38 -07:00
head_32.S powerpc: Map more memory early on 601 processors 2009-06-26 14:37:25 +10:00
head_40x.S powerpc: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:38 -07:00
head_44x.S powerpc: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:38 -07:00
head_64.S powerpc: Split exception handling out of head_64.S 2009-06-09 16:47:37 +10:00
head_booke.h powerpc: Add PTRACE_SINGLEBLOCK support 2009-06-09 13:29:25 +10:00
head_fsl_booke.S powerpc: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:38 -07:00
ibmebus.c powerpc: struct device - replace bus_id with dev_name(), dev_set_name() 2008-12-16 15:53:38 +11:00
idle_6xx.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_e500.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_power4.S
idle.c powerpc: ftrace, do not latency trace idle 2008-11-20 10:51:15 -08:00
init_task.c mm: consolidate init_mm definition 2009-06-16 19:47:28 -07:00
io.c
iomap.c
iommu.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
irq.c Merge commit 'origin/master' into next 2009-06-12 16:53:38 +10:00
isa-bridge.c
kgdb.c kgdb, x86, arm, mips, powerpc: ignore user space single stepping 2008-09-26 10:36:41 -05:00
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
l2cr_6xx.S
legacy_serial.c powerpc/powermac: Fixup default serial port device for pmac_zilog 2008-07-28 16:30:53 +10:00
lparcfg.c powerpc: Display processor virtualization resource allocs in lparcfg 2009-06-02 10:36:10 +10:00
machine_kexec_32.c kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
machine_kexec_64.c powerpc/32: Setup OF properties for kdump 2008-12-23 15:13:29 +11:00
machine_kexec.c powerpc: Allow mem=x cmdline to work with 4G+ 2009-05-15 16:43:41 +10:00
Makefile Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 11:29:32 -07:00
misc_32.S powerpc/44x: Support 16K/64K base page sizes on 44x 2008-12-29 09:53:25 +11:00
misc_64.S powerpc: Move VMX and VSX asm code to vector.S 2009-06-09 16:46:25 +10:00
misc.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
module_32.c powerpc/ppc32: ftrace, dynamic ftrace to handle modules 2008-11-20 10:52:53 -08:00
module_64.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
module.c module: cleanup FIXME comments about trimming exception table entries. 2009-06-12 21:47:05 +09:30
mpc7450-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
msi.c powerpc/PCI: include pci.h in powerpc MSI implementation 2009-03-25 08:54:29 -07:00
nvram_64.c
of_device.c powerpc/of: Fix usage of dev_set_name() in of_device_alloc() 2009-06-26 16:55:35 +10:00
of_platform.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
paca.c powerpc: Separate PACA fields for server CPUs 2009-06-09 16:47:38 +10:00
pci_32.c powerpc/pci: Remove redundant pcnet32 fixup 2009-05-21 15:44:24 +10:00
pci_64.c powerpc: Fix warning when printing a resource_size_t 2009-06-09 16:47:41 +10:00
pci_dn.c powerpc/pci: Move pseries code into pseries platform specific area 2009-05-21 15:44:24 +10:00
pci-common.c powerpc/pci: Fix annotation of pcibios_claim_one_bus 2009-06-02 11:09:12 +10:00
perf_counter.c perf_counter/powerpc: Fix oops on cpus without perf_counter hardware support 2009-08-09 12:54:37 +02:00
pmc.c
power4-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5+-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power6-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power7-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc32.h
ppc970-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc_ksyms.c powerpc: Export cacheable_memzero as its now used in a driver 2009-01-08 16:25:17 +11:00
ppc_save_regs.S powerpc: Prepare xmon_save_regs for use with kdump 2008-12-23 15:13:28 +11:00
proc_ppc64.c
process.c powerpc: Fix output from show_regs 2009-06-26 14:37:24 +10:00
prom_init_check.sh powerpc: Print linux_banner in prom_init 2009-03-11 17:11:33 +11:00
prom_init.c edac: cpc925 MC platform device setup 2009-06-18 13:03:57 -07:00
prom_parse.c powerpc: Fix of_node_put() exit path in of_irq_map_one() 2009-04-20 12:18:43 -06:00
prom.c powerpc: Shield code specific to 64-bit server processors 2009-06-09 16:47:38 +10:00
ptrace32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
ptrace.c powerpc: Fix booke user_disable_single_step() 2009-07-15 17:41:45 +10:00
reloc_64.S powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
rtas_flash.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
rtas_pci.c powerpc/pci: Clean up direct access to sysdata by RTAS 2009-05-21 15:44:23 +10:00
rtas-proc.c
rtas-rtc.c
rtas.c powerpc: Use one common impl. of RTAS timebase sync and use raw spinlock 2009-06-26 16:55:25 +10:00
setup_32.c powerpc: Add irqtrace support for 32-bit powerpc 2009-06-26 14:37:27 +10:00
setup_64.c powerpc: Fix warning in setup_64.c when CONFIG_RELOCATABLE=y 2009-06-15 13:26:21 +10:00
setup-common.c powerpc: Remove duplicated #include's 2009-04-07 15:18:58 +10:00
setup.h
signal_32.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal_64.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal.h powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
smp-tbsync.c powerpc: Silence software timebase sync 2008-11-05 22:08:28 +11:00
smp.c powerpc/pmac: Fix issues with PowerMac "PowerSurge" SMP 2009-06-26 14:37:24 +10:00
softemu8xx.c Remove asm/a.out.h files for all architectures without a.out support. 2008-09-06 19:30:24 +01:00
stacktrace.c powerpc: Removed duplicated include in stacktrace.c 2008-07-28 16:30:47 +10:00
suspend.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
swsusp_32.S powerpc/mm: Introduce MMU features 2008-12-21 14:21:16 +11:00
swsusp_64.c
swsusp_asm64.S powerpc: Fix 64-bit hibernation with 64k pages 2008-10-07 14:26:20 +11:00
swsusp.c powerpc/mm: Split mmu_context handling 2008-12-21 14:21:15 +11:00
sys_ppc32.c compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
syscalls.c
sysfs.c powerpc: Fix bugs introduced by sysfs changes 2009-03-27 16:58:24 +11:00
systbl_chk.c
systbl_chk.sh
systbl.S
tau_6xx.c
time.c perf_counter: powerpc: Enable use of software counters on 32-bit powerpc 2009-06-18 11:11:44 +02:00
traps.c powerpc: Add PTRACE_SINGLEBLOCK support 2009-06-09 13:29:25 +10:00
udbg_16550.c powerpc/440: Fix warning early debug code 2009-06-26 16:55:35 +10:00
udbg.c powerpc/udbg: Fix lost byte during console handover; change LFCR to CRLF 2009-03-11 17:11:34 +11:00
vdso.c powerpc: Move 64bit VDSO to improve context switch performance 2009-08-20 10:12:24 +10:00
vecemu.c
vector.S powerpc: Fix another bug in move of altivec code to vector.S 2009-07-15 17:41:46 +10:00
vio.c workqueue: add to_delayed_work() helper function 2009-04-02 19:04:50 -07:00
vmlinux.lds.S powerpc: Explicit alignment for .data.cacheline_aligned 2009-05-18 15:19:05 +10:00