kernel_optimize_test/arch/powerpc/include/asm
Anton Blanchard 5a0e9b5718 powerpc: Use lwsync for acquire barrier if CPU supports it
Nick Piggin discovered that lwsync barriers around locks were faster than isync
on 970. That was a long time ago and I completely dropped the ball in testing
his patches across other ppc64 processors.

Turns out the idea helps on other chips. Using a microbenchmark that
uses a lot of threads to contend on a global pthread mutex (and therefore a
global futex), POWER6 improves 8% and POWER7 improves 2%. I checked POWER5
and while I couldn't measure an improvement, there was no regression.

This patch uses the lwsync patching code to replace the isyncs with lwsyncs
on CPUs that support the instruction. We were marking POWER3 and RS64 as lwsync
capable but in reality they treat it as a full sync (ie slow). Remove the
CPU_FTR_LWSYNC bit from these CPUs so they continue to use the faster isync
method.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2010-02-17 14:03:16 +11:00
..
iseries powerpc/iseries: Fix pci breakage due to bad dma_data initialization 2009-05-15 16:43:41 +10:00
8xx_immap.h
8253pit.h time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
abs_addr.h
agp.h agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
asm-compat.h powerpc: Use lwarx/ldarx hint in bit locks 2010-02-17 14:03:15 +11:00
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
async_tx.h ppc440spe-adma: adds updated ppc440spe adma driver 2009-12-11 21:24:44 -07:00
atomic.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
auxvec.h
backlight.h
bitops.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bootx.h powerpc: Fix warnings from make headers_check 2009-02-23 10:48:57 +11:00
btext.h
bug.h powerpc: Convert BUG() to use unreachable() 2009-12-18 14:54:27 +11:00
bugs.h
byteorder.h
cache.h
cacheflush.h block: add helpers to run flush_dcache_page() against a bio and a request's pages 2009-11-26 09:16:19 +01:00
cell-pmu.h
cell-regs.h powerpc/cell: Move CBE_IOPTE_* to <asm/cell-regs.h> 2009-08-20 10:29:26 +10:00
checksum.h
clk_interface.h
code-patching.h powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
compat.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
cpm1.h powerpc/cpm: Remove SPI defines and spi structs 2009-11-11 21:43:17 -06:00
cpm2.h powerpc/cpm: Move CPMFCR_* defines into cpm.h 2009-11-11 21:43:19 -06:00
cpm.h powerpc/qe&cpm: Implement static inline stubs for non-QE/CPM builds 2009-11-11 21:43:20 -06:00
cputable.h powerpc: Use lwsync for acquire barrier if CPU supports it 2010-02-17 14:03:16 +11:00
cputhreads.h powerpc/mm: Add HW threads support to no_hash TLB management 2009-08-20 10:12:37 +10:00
cputime.h powerpc: Replace per_cpu(, smp_processor_id()) with __get_cpu_var() 2010-02-03 17:39:48 +11:00
current.h
dbdma.h
dbell.h powerpc: Add support for using doorbells for SMP IPI 2009-02-23 15:53:03 +11:00
dcr-generic.h
dcr-mmio.h
dcr-native.h
dcr-regs.h ppc440spe-adma: adds updated ppc440spe adma driver 2009-12-11 21:24:44 -07:00
dcr.h
delay.h powerpc: Fix spin_event_timeout() to be robust over context switches 2009-07-08 13:50:24 +10:00
device.h powerpc: Change archdata dma_data to a union 2009-09-24 15:31:43 +10:00
disassemble.h
div64.h
dma-mapping.h dma-mapping: fix off-by-one error in dma_capable() 2009-12-16 07:20:12 -08:00
dma.h
edac.h
eeh_event.h
eeh.h
elf.h powerpc: TIF_ABI_PENDING bit removal 2010-02-01 14:00:30 +11:00
emergency-restart.h
emulated_ops.h powerpc: perf_event: Add alignment-faults and emulation-faults software events 2009-10-28 16:13:03 +11:00
errno.h
exception-64e.h powerpc/book3e-64: Add helper function to setup IVORs 2009-08-28 14:24:13 +10:00
exception-64s.h Make head_64.S aware of KVM real mode code 2009-11-05 16:49:57 +11:00
fb.h
fcntl.h
feature-fixups.h powerpc: Enable MMU feature sections for inline asm 2009-05-21 15:44:21 +10:00
firmware.h powerpc: Fix hypervisor TLB batching 2009-10-14 16:58:37 +11:00
fixmap.h powerpc: reserve fixmap entries for early debug 2009-12-12 22:24:30 -07:00
floppy.h
fs_pd.h
fsl_gtm.h
fsl_lbc.h powerpc/fsl: Increase the number of possible localbus banks 2009-06-15 21:45:32 -05:00
fsldma.h fsldma: Add DMA_SLAVE support 2009-09-08 17:53:04 -07:00
ftrace.h powerpc32, ftrace: save and restore mcount regs with macro 2009-02-23 10:48:54 +11:00
futex.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
gpio.h powerpc/gpio: support gpio_to_irq() 2009-12-10 20:08:15 -06:00
grackle.h
hardirq.h powerpc: Convert global "BAD" interrupt to per cpu spurious 2010-02-17 14:02:49 +11:00
heathrow.h
highmem.h powerpc/mm: Make k(un)map_atomic out of line 2009-06-26 14:37:25 +10:00
hugetlb.h powerpc/mm: Bring hugepage PTE accessor functions back into sync with normal accessors 2009-10-30 17:21:23 +11:00
hvcall.h Merge commit 'origin/master' into next 2009-12-09 17:14:38 +11:00
hvconsole.h
hvcserver.h
hw_irq.h powerpc: Fix potential compile error irqs_disabled_flags 2009-10-30 17:21:27 +11:00
hydra.h
i8259.h
ibmebus.h
ide.h
immap_86xx.h
immap_cpm2.h powerpc/qe&cpm2: Avoid redefinitions in CPM2 and QE headers 2009-11-11 21:43:18 -06:00
immap_qe.h powerpc/qe&cpm2: Avoid redefinitions in CPM2 and QE headers 2009-11-11 21:43:18 -06:00
io-defs.h
io.h powerpc: Wire up /proc/vmallocinfo to our ioremap() 2009-03-11 17:10:14 +11:00
ioctl.h
ioctls.h
iommu.h powerpc: Change archdata dma_data to a union 2009-09-24 15:31:43 +10:00
ipcbuf.h
ipic.h
irq_regs.h
irq.h powerpc: Make "intspec" pointers in irq_host->xlate() const 2009-12-09 17:10:37 +11:00
irqflags.h
Kbuild
kdebug.h
kdump.h
kexec.h
keylargo.h
kgdb.h
kmap_types.h powerpc: Fix DEBUG_HIGHMEM build break from d451564669 2009-12-01 09:33:45 +11:00
kprobes.h
kvm_44x.h KVM: ppc: move struct kvmppc_44x_tlbe into 44x-specific header 2009-03-24 11:02:55 +02:00
kvm_asm.h powerpc/kvm: Sync guest visible MMU state 2009-12-08 16:02:50 +11:00
kvm_book3s_64_asm.h Add Book3s_64 intercept helpers 2009-11-05 16:49:53 +11:00
kvm_book3s.h powerpc/kvm: Sync guest visible MMU state 2009-12-08 16:02:50 +11:00
kvm_e500.h KVM: ppc: E500 core-specific code 2009-03-24 11:02:58 +02:00
kvm_host.h Use hrtimers for the decrementer 2009-11-05 16:51:05 +11:00
kvm_para.h
kvm_ppc.h Add book3s_64 highmem asm code 2009-11-05 16:49:53 +11:00
kvm.h powerpc/kvm: Sync guest visible MMU state 2009-12-08 16:02:50 +11:00
libata-portmap.h
linkage.h
lmb.h
local.h powerpc: Use lwarx/ldarx hint in bit locks 2010-02-17 14:03:15 +11:00
lppaca.h powerpc/pseries: Add extended_cede_processor() helper function. 2009-11-24 14:33:03 +11:00
lv1call.h
machdep.h sysfs/cpu: Add probe/release files 2009-12-09 17:09:33 +11:00
macio.h powerpc/macio: Rework hotplug media bay support 2009-12-09 17:09:14 +11:00
mc146818rtc.h
mediabay.h powerpc/macio: Rework hotplug media bay support 2009-12-09 17:09:14 +11:00
mman.h mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions 2009-09-22 07:17:41 -07:00
mmu_context.h Split init_new_context and destroy_context 2009-11-05 16:50:25 +11:00
mmu-8xx.h powerpc: Add TLB management code for 64-bit Book3E 2009-08-20 10:25:09 +10:00
mmu-40x.h powerpc: Add TLB management code for 64-bit Book3E 2009-08-20 10:25:09 +10:00
mmu-44x.h powerpc: Add TLB management code for 64-bit Book3E 2009-08-20 10:25:09 +10:00
mmu-book3e.h powerpc/booke: Move MMUCSR definition into mmu-book3e.h 2009-08-24 20:48:05 -05:00
mmu-hash32.h powerpc: Name xpn & x fields in HW Hash PTE format 2009-08-28 14:24:12 +10:00
mmu-hash64.h powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT 2009-12-08 15:59:33 +11:00
mmu.h powerpc/mm: Add MMU features for TLB reservation & Paired MAS registers 2009-08-28 14:24:12 +10:00
mmzone.h numa, cpumask: move numa_node_id default implementation to topology.h, fix 2009-03-19 12:51:25 +01:00
module.h module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y 2009-12-15 16:28:34 +10:30
mpc5xxx.h powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function 2009-06-17 00:30:22 -06:00
mpc6xx.h
mpc8xx.h
mpc52xx_psc.h ASoC: Add a few more mpc5200 PSC defines 2009-05-24 19:31:04 +01:00
mpc52xx.h mpc52xx/wdt: merge WDT code into the GPT driver 2009-11-13 11:09:31 -07:00
mpc8260.h
mpic.h powerpc: Add support for CoreInt delivery of interrupts on MPIC 2009-04-06 09:09:14 -05:00
msgbuf.h
msi_bitmap.h
mutex.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
nvram.h powerpc/nvram_64: Remove unused code 2009-10-30 17:21:28 +11:00
of_device.h
of_platform.h of: make of_(un)register_platform_driver common code 2009-05-02 15:36:10 -07:00
ohare.h
oprofile_impl.h
paca.h Add fields to PACA 2009-11-05 16:50:26 +11:00
page_32.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
page_64.h powerpc/mm: Cleanup initialization of hugepages on powerpc 2009-10-30 17:20:58 +11:00
page.h powerpc/mm: Allow more flexible layouts for hugepage pagetables 2009-10-30 17:20:58 +11:00
param.h powerpc: Simplify param.h by including <asm-generic/param.h> 2010-02-03 17:39:48 +11:00
parport.h parport_pc: Fix build failure drivers/parport/parport_pc.c for powerpc 2009-04-14 08:48:50 -07:00
pasemi_dma.h
pci-bridge.h powerpc/pci: Pull ppc32 PCI features into common 2009-08-28 14:24:15 +10:00
pci.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-09-16 07:49:54 -07:00
percpu.h
perf_event.h perf_event, powerpc: Fix compilation after big perf_counter rename 2009-09-22 09:30:40 +02:00
pgalloc-32.h powerpc/mm: Cleanup management of kmem_caches for pagetables 2009-10-30 17:20:57 +11:00
pgalloc-64.h powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT 2009-12-08 15:59:33 +11:00
pgalloc.h powerpc/mm: Cleanup management of kmem_caches for pagetables 2009-10-30 17:20:57 +11:00
pgtable-ppc32.h powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT 2009-09-02 16:20:41 +10:00
pgtable-ppc64-4k.h powerpc/mm: Split the various pgtable-* headers based on MMU type 2009-03-20 15:56:57 +11:00
pgtable-ppc64-64k.h powerpc/mm: Fix misplaced #endif in pgtable-ppc64-64k.h 2009-08-20 10:12:35 +10:00
pgtable-ppc64.h powerpc/mm: Allow more flexible layouts for hugepage pagetables 2009-10-30 17:20:58 +11:00
pgtable.h powerpc/mm: Allow more flexible layouts for hugepage pagetables 2009-10-30 17:20:58 +11:00
phyp_dump.h
pmac_feature.h
pmac_low_i2c.h i2c-powermac: Include the i2c_adapter in struct pmac_i2c_bus 2009-12-06 17:06:19 +01:00
pmac_pfunc.h
pmc.h powerpc/pmc: Don't access lppaca on Book3E 2009-09-24 15:31:39 +10:00
pmi.h
poll.h
posix_types.h
ppc4xx.h
ppc_asm.h powerpc: Adjust base and index registers in Altivec macros 2009-08-28 14:24:12 +10:00
ppc-opcode.h powerpc: Use lwarx/ldarx hint in bit locks 2010-02-17 14:03:15 +11:00
ppc-pci.h powerpc/eeh: Fix a bug when pci structure is null 2010-02-17 14:02:47 +11:00
processor.h powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
prom.h of: merge other miscellaneous prototypes 2009-10-15 10:58:07 -06:00
ps3.h ps3: Replace direct file operations by callback 2009-06-15 16:47:26 +10:00
ps3av.h powerpc/ps3: Make ps3av_set_video_mode mode ID signed 2009-03-11 17:10:17 +11:00
ps3fb.h powerpc: Remove duplicated #include's 2009-04-07 15:18:58 +10:00
ps3gpu.h ps3fb: Tear down FB setup during cleanup 2009-06-15 13:26:21 +10:00
ps3stor.h
pSeries_reconfig.h powerpc/pseries: Kernel DLPAR Infrastructure 2009-12-09 17:09:32 +11:00
pte-8xx.h powerpc/8xx: Restore _PAGE_WRITETHRU 2009-12-09 17:10:37 +11:00
pte-40x.h powerpc/mm: Fix 40x and 8xx vs. _PAGE_SPECIAL 2009-09-24 15:31:49 +10:00
pte-44x.h powerpc/mm: Cleanup handling of execute permission 2009-08-27 13:12:51 +10:00
pte-book3e.h powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT 2009-09-02 16:20:41 +10:00
pte-common.h powerpc/mm: Fix 40x and 8xx vs. _PAGE_SPECIAL 2009-09-24 15:31:49 +10:00
pte-fsl-booke.h powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT 2009-09-02 16:20:41 +10:00
pte-hash32.h powerpc/mm: Cleanup handling of execute permission 2009-08-27 13:12:51 +10:00
pte-hash64-4k.h powerpc/mm: Tweak PTE bit combination definitions 2009-03-24 13:47:33 +11:00
pte-hash64-64k.h powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT 2009-12-08 15:59:33 +11:00
pte-hash64.h powerpc/mm: Add option for non-atomic PTE updates to ppc64 2009-03-24 13:47:34 +11:00
ptrace.h ptrace: powerpc: implement user_single_step_siginfo() 2009-12-16 07:20:08 -08:00
qe_ic.h
qe.h powerpc/qe&cpm: Implement static inline stubs for non-QE/CPM builds 2009-11-11 21:43:20 -06:00
reg_8xx.h
reg_booke.h powerpc/book3e-64: Add support to initial_tlb_book3e for non-HES TLB 2009-08-28 14:24:14 +10:00
reg_fsl_emb.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
reg.h powerpc: perf_event: Enable SDAR in continous sample mode 2009-10-28 16:13:02 +11:00
resource.h
rheap.h
rio.h
rtas.h locking: Convert raw_spinlock to arch_spinlock 2009-12-14 23:55:32 +01:00
rtc.h
rwsem.h
scatterlist.h powerpc: Use sg->dma_length in sg_dma_len() macro on 32-bit 2009-05-21 15:44:25 +10:00
seccomp.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
sections.h
sembuf.h
serial.h
setjmp.h
setup.h powerpc: derive COMMAND_LINE_SIZE from asm-generic 2009-08-28 14:24:16 +10:00
sfp-machine.h powerpc/math-emu: Change types to work on ppc64 2009-04-02 16:17:36 -05:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h percpu: make percpu symbols in powerpc unique 2009-10-29 22:34:14 +09:00
smu.h
socket.h net: Generalize socket rx gap / receive queue overflow cmsg 2009-10-12 13:26:31 -07:00
sockios.h
sparsemem.h
spinlock_types.h locking: Convert raw_rwlock to arch_rwlock 2009-12-14 23:55:32 +01:00
spinlock.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
spu_csa.h
spu_info.h powerpc: Fix warnings from make headers_check 2009-02-23 10:48:57 +11:00
spu_priv1.h
spu.h
sstep.h
stat.h
statfs.h
string.h
suspend.h pm: cleanup includes 2009-04-01 08:59:16 -07:00
swab.h powerpc: Fix warnings from make headers_check 2009-02-23 10:48:57 +11:00
swiotlb.h powerpc: use dma_map_ops struct 2009-08-28 14:24:10 +10:00
synch.h powerpc: Use lwsync for acquire barrier if CPU supports it 2010-02-17 14:03:16 +11:00
syscall.h
syscalls.h
systbl.h powerpc: Fix wrong error code from ppc32 select syscall 2009-11-24 17:00:26 +11:00
system.h powerpc: Rename LWSYNC_ON_SMP to PPC_RELEASE_BARRIER, ISYNC_ON_SMP to PPC_ACQUIRE_BARRIER 2010-02-17 14:03:15 +11:00
tce.h
termbits.h
termios.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
thread_info.h powerpc: TIF_ABI_PENDING bit removal 2010-02-01 14:00:30 +11:00
time.h
timex.h
tlb.h powerpc/mm: Rework & cleanup page table freeing code path 2009-08-20 10:24:56 +10:00
tlbflush.h powerpc/mm: Make low level TLB flush ops on BookE take additional args 2009-08-20 10:12:41 +10:00
topology.h powerpc: Reformat SD_NODE_INIT to match x86 2010-02-09 13:56:07 +11:00
trace.h powerpc: tracing: Give hypervisor call tracepoints access to arguments 2009-10-28 16:13:04 +11:00
tsi108_irq.h
tsi108_pci.h
tsi108.h
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess.h
ucc_fast.h
ucc_slow.h
ucc.h
ucontext.h
udbg.h powerpc: gamecube/wii: early debugging using usbgecko 2009-12-12 22:24:31 -07:00
uic.h
unaligned.h
uninorth.h
unistd.h perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
user.h
vdso_datapage.h
vdso.h powerpc: Move 64bit VDSO to improve context switch performance 2009-08-20 10:12:24 +10:00
vga.h
vio.h
xilinx_intc.h
xilinx_pci.h powerpc/virtex: Add support for Xilinx PCI host bridge 2009-06-06 10:14:22 -06:00
xmon.h
xor.h