linux/arch/mips
Paul Burton 5fac4f7ac0 MIPS: Select CONFIG_ARCH_USE_CMPXCHG_LOCKREF for MIPS64
On MIPS64 we have spinlocks that are 32b in size and an efficient
cmpxchg64 implementation, so we qualify to make use of cmpxchg backed
lockrefs. Select the ARCH_USE_CMPXCHG_LOCKREF Kconfig symbol and provide
a trivial implementation of arch_spin_value_unlocked to satisfy the
lockref code.

Using Linus' simple testcase from
http://article.gmane.org/gmane.linux.file-systems/77466 on a dual core
system with an in-development MIPS64 CPU running on FPGA I see around an
8% gain:

Pre-patch:
    Total loops: 252698
    Total loops: 251482
    Total loops: 250806
    Total loops: 252885
    Total loops: 251666

Post-patch:
    Total loops: 273728
    Total loops: 269932
    Total loops: 269341
    Total loops: 275004
    Total loops: 270208

[ralf@linux-mips.org: Fixed conflict.]

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: linux-kernel@vger.kernel.org
Cc: Maciej W. Rozycki <macro@codesourcery.com>
Cc: Markos Chandras <markos.chandras@imgtec.com>
Patchwork: https://patchwork.linux-mips.org/patch/10810/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2015-09-03 12:08:01 +02:00
..
alchemy MIPS: Alchemy: Migrate to new 'set-state' interface 2015-09-03 12:07:50 +02:00
ar7 MIPS: AR7: Replace mac address parsing 2015-04-02 13:54:22 +02:00
ath25 Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-07-01 15:19:35 -07:00
ath79 MIPS: ath91: Remove pointless irqdisable/enable 2015-08-26 15:23:31 +02:00
bcm47xx MIPS: BCM47xx: Simplify handling SPROM revisions 2015-06-21 22:19:59 +02:00
bcm63xx MIPS: bcm63xx: Use irq_set_handler_locked() 2015-08-26 15:23:29 +02:00
bmips MIPS: BMIPS: Accept UHI interface for passing a dtb 2015-06-21 21:54:17 +02:00
boot MIPS: Malta: Basic DT plumbing 2015-06-21 21:54:29 +02:00
cavium-octeon MIPS: octeon: Replace the homebrewn flow handler 2015-08-26 15:23:32 +02:00
cobalt MIPS: Cobalt Don't use module_init in non-modular MTD registration. 2015-06-21 22:14:30 +02:00
configs MIPS: Loongson: Naming style cleanup and rework 2015-06-21 21:53:59 +02:00
dec MIPS: DEC: Do not set up the FPU interrupt if no FPU 2015-04-08 01:10:46 +02:00
emma
fw MIPS: ARC: Use __noreturn / unreachable in ARC termination functions. 2015-01-13 16:04:27 +01:00
include MIPS: Select CONFIG_ARCH_USE_CMPXCHG_LOCKREF for MIPS64 2015-09-03 12:08:01 +02:00
jazz MIPS: Jazz: Migrate to new 'set-state' interface 2015-09-03 12:07:50 +02:00
jz4740 MIPS: jz4740: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
kernel MIPS: Advertise MSA support via HWCAP when present 2015-09-03 12:08:00 +02:00
kvm The bulk of the changes here is for x86. And for once it's not 2015-06-24 09:36:49 -07:00
lantiq MIPS: Export get_c0_perfcount_int() 2015-08-03 09:25:18 +02:00
lasat MIPS: Lasat: Move from deprecated __initcall to arch_initcall. 2015-09-03 12:07:49 +02:00
lib MIPS: Rearrange ENTRYLO field definitions 2015-09-03 12:07:48 +02:00
loongson32 MIPS: loongsoon32: Migrate to new 'set-state' interface 2015-09-03 12:07:53 +02:00
loongson64 MIPS: loongson64/timer: Migrate to new 'set-state' interface 2015-09-03 12:07:53 +02:00
math-emu MIPS: math-emu: Move from deprecated __initcall to arch_initcall. 2015-09-03 12:07:50 +02:00
mm MIPS: Add implementation of dma_map_ops.mmap() 2015-09-03 12:08:01 +02:00
mti-malta MIPS: malta: Use generic platform_maar_init 2015-09-03 12:07:41 +02:00
mti-sead3 MIPS: Export get_c0_perfcount_int() 2015-08-03 09:25:18 +02:00
net MIPS: BPF: Introduce BPF ASM helpers 2015-06-21 21:54:25 +02:00
netlogic MIPS: netlogic: Prepare ipi handlers for irq argument removal 2015-08-26 15:23:33 +02:00
oprofile MIPS: Add cases for CPU_I6400 2015-08-26 15:23:03 +02:00
paravirt MIPS: SMP: Don't increment irq_count multiple times for call function IPIs 2015-08-03 09:25:12 +02:00
pci MIPS: ops-emma2rh: Drop nonsensical db_assert 2015-08-26 15:23:35 +02:00
pistachio MIPS: Export get_c0_perfcount_int() 2015-08-03 09:25:18 +02:00
pmcs-msp71xx MIPS: irq: Use access helper irq_data_get_affinity_mask() 2015-08-26 15:23:28 +02:00
pnx833x
power MIPS: Hibernate: flush TLB entries earlier 2015-04-10 15:41:52 +02:00
ralink MIPS: rt3352: Migrate to new 'set-state' interface 2015-09-03 12:07:54 +02:00
rb532
sgi-ip22 MIPS: ip22-gio: Remove legacy suspend/resume support 2015-02-20 13:30:55 +01:00
sgi-ip27 MIPS: IP27: Migrate to new 'set-state' interface 2015-09-03 12:07:54 +02:00
sgi-ip32 MIPS: IP32: Fix build errors in reset code in DS1685 platform hook. 2015-05-13 00:01:41 +02:00
sibyte MIPS: Sibyte: Move bus watcher from deprecated __initcall to device_initcall 2015-09-03 12:07:49 +02:00
sni MIPS: sni: Migrate to new 'set-state' interface 2015-09-03 12:07:54 +02:00
txx9 MIPS/IRQCHIP: Move irq_chip from arch/mips to drivers/irqchip. 2015-06-21 21:52:50 +02:00
vr41xx MIPS/IRQCHIP: Move irq_chip from arch/mips to drivers/irqchip. 2015-06-21 21:52:50 +02:00
Kbuild
Kbuild.platforms MIPS: Loongson: Naming style cleanup and rework 2015-06-21 21:53:59 +02:00
Kconfig MIPS: Select CONFIG_ARCH_USE_CMPXCHG_LOCKREF for MIPS64 2015-09-03 12:08:01 +02:00
Kconfig.debug MIPS: Drop CONFIG_RUNTIME_DEBUG & debug.h 2015-08-26 15:23:36 +02:00
Makefile MIPS: SB1: Remove support for Pass 1 parts. 2015-07-14 21:47:34 +02:00