Hi, Here is the patchset that performs cmpxchg_local and cmpxchg64_local standardization across architectures. It uses interrupt save/restore to emulate the atomic operation on architectures lacking such atomic op. We have seen interesing performance gain in slub on architectures where the local cmpxchg is faster than interrupt disable, namely x86 and amd64. It becomes less interesting on architectures lacking atomic ops and where the only cmpxchg primitive available is almost as fast as irq disable/enable (ia64); a small performance hit can be expected, mostly due to the additionnal memory barriers it adds to the code (and the fact that it is faster to disable interrupts once for a longer time rather than multiple times). It applies in this order on 2.6.23-mm1 : add-cmpxchg-local-to-generic-for-up.patch i386-cmpxchg64-80386-80486-fallback.patch add-cmpxchg64-to-alpha.patch add-cmpxchg64-to-mips.patch add-cmpxchg64-to-powerpc.patch add-cmpxchg64-to-x86_64.patch # add-cmpxchg-local-to-arm.patch add-cmpxchg-local-to-avr32.patch add-cmpxchg-local-to-blackfin.patch add-cmpxchg-local-to-cris.patch add-cmpxchg-local-to-frv.patch add-cmpxchg-local-to-h8300.patch add-cmpxchg-local-to-ia64.patch add-cmpxchg-local-to-m32r.patch fix-m32r-__xchg.patch fix-m32r-include-sched-h-in-smpboot.patch local_t_m32r_optimized.patch add-cmpxchg-local-to-m68k.patch add-cmpxchg-local-to-m68knommu.patch add-cmpxchg-local-to-parisc.patch add-cmpxchg-local-to-ppc.patch add-cmpxchg-local-to-s390.patch add-cmpxchg-local-to-sh.patch add-cmpxchg-local-to-sh64.patch add-cmpxchg-local-to-sparc.patch add-cmpxchg-local-to-sparc64.patch add-cmpxchg-local-to-v850.patch add-cmpxchg-local-to-xtensa.patch Mathieu -- Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- [patch 13/28] Add cmpxchg_local, cmpxchg64 and cmpxchg64_local to ia64
- From: Mathieu Desnoyers <[email protected]>
- [patch 19/28] Add cmpxchg_local to m68knommu
- From: Mathieu Desnoyers <[email protected]>
- [patch 05/28] Add cmpxchg64 and cmpxchg64_local to powerpc
- From: Mathieu Desnoyers <[email protected]>
- [patch 23/28] Add cmpxchg_local to sh, use generic cmpxchg() instead of cmpxchg_u32
- From: Mathieu Desnoyers <[email protected]>
- [patch 07/28] Add cmpxchg_local to arm
- From: Mathieu Desnoyers <[email protected]>
- [patch 17/28] local_t m32r use architecture specific cmpxchg_local
- From: Mathieu Desnoyers <[email protected]>
- [patch 20/28] Add cmpxchg_local to parisc
- From: Mathieu Desnoyers <[email protected]>
- [patch 02/28] Fall back on interrupt disable in cmpxchg8b on 80386 and 80486
- From: Mathieu Desnoyers <[email protected]>
- [patch 27/28] Add cmpxchg_local to v850
- From: Mathieu Desnoyers <[email protected]>
- [patch 04/28] Add cmpxchg64 and cmpxchg64_local to mips
- From: Mathieu Desnoyers <[email protected]>
- [patch 01/28] Add cmpxchg_local to asm-generic for per cpu atomic operations
- From: Mathieu Desnoyers <[email protected]>
- [patch 10/28] Add cmpxchg_local to cris
- From: Mathieu Desnoyers <[email protected]>
- [patch 16/28] m32r: build fix of arch/m32r/kernel/smpboot.c
- From: Mathieu Desnoyers <[email protected]>
- [patch 03/28] Add cmpxchg64 and cmpxchg64_local to alpha
- From: Mathieu Desnoyers <[email protected]>
- [patch 18/28] Add cmpxchg_local to m86k
- From: Mathieu Desnoyers <[email protected]>
- [patch 06/28] Add cmpxchg64 and cmpxchg64_local to x86_64
- From: Mathieu Desnoyers <[email protected]>
- [patch 09/28] Add cmpxchg_local to blackfin, replace __cmpxchg by generic cmpxchg
- From: Mathieu Desnoyers <[email protected]>
- [patch 14/28] New cmpxchg_local (optimized for UP case) for m32r
- From: Mathieu Desnoyers <[email protected]>
- [patch 11/28] Add cmpxchg_local to frv
- From: Mathieu Desnoyers <[email protected]>
- [patch 24/28] Add cmpxchg_local to sh64
- From: Mathieu Desnoyers <[email protected]>
- [patch 15/28] Fix m32r __xchg
- From: Mathieu Desnoyers <[email protected]>
- [patch 08/28] Add cmpxchg_local to avr32
- From: Mathieu Desnoyers <[email protected]>
- [patch 21/28] Add cmpxchg_local to ppc
- From: Mathieu Desnoyers <[email protected]>
- [patch 22/28] Add cmpxchg_local to s390
- From: Mathieu Desnoyers <[email protected]>
- [patch 28/28] Add cmpxchg_local to xtensa
- From: Mathieu Desnoyers <[email protected]>
- [patch 26/28] Add cmpxchg_local to sparc64
- From: Mathieu Desnoyers <[email protected]>
- [patch 25/28] Add cmpxchg_local to sparc, move __cmpxchg to system.h
- From: Mathieu Desnoyers <[email protected]>
- [patch 12/28] Add cmpxchg_local to h8300
- From: Mathieu Desnoyers <[email protected]>
- [patch 13/28] Add cmpxchg_local, cmpxchg64 and cmpxchg64_local to ia64
- Prev by Date: [patch 11/28] Add cmpxchg_local to frv
- Next by Date: [patch 14/28] New cmpxchg_local (optimized for UP case) for m32r
- Previous by thread: tipc_config.h requires linux/string.h, which does not exist in exported headers
- Next by thread: [patch 12/28] Add cmpxchg_local to h8300
- Index(es):