Messages in this thread | | | From | Jeremy Fitzhardinge <> | Subject | [PATCH 00/18] x86: Ticket lock + cmpxchg cleanup | Date | Wed, 24 Aug 2011 10:52:54 -0700 |
| |
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Hi all,
[ Change from last post: use PeterZ's idea to retain link-time reporting of bad sized arguments for xchg/cmpxchg/xadd. ]
This is a repost of the ticketlock cleanup I posted for the last mergewindow.
The main differences are: - put "asm volatiles" into the locked unlock path - tidy up xadd helper to put it into a common place - clean up the rest of cmpxchg.h to remove most of the 32/64 duplication
As a bonus, I added some cmpxchg_flag() variants, which return a bool rather than the old value, which saves the caller from having to do a comparison (since cmpxchg itself sets the flags). This is useful since many callers of cmpxchg() only care whether it worked without actually getting the old value.
This is also available at: git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git upstream/ticketlock-cleanup
Thanks, J
Jeremy Fitzhardinge (18): x86/ticketlock: clean up types and accessors x86/ticketlock: convert spin loop to C x86/ticketlock: Use C for __ticket_spin_unlock x86/ticketlock: make large and small ticket versions of spin_lock the same x86/ticketlock: make __ticket_spin_lock common x86/ticketlock: make __ticket_spin_trylock common x86: add xadd helper macro x86/ticketlock: use xadd helper x86/cmpxchg: linux/alternative.h has LOCK_PREFIX x86/cmpxchg: move 32-bit __cmpxchg_wrong_size to match 64 bit. x86/cmpxchg: move 64-bit set64_bit() to match 32-bit x86/cmpxchg: unify cmpxchg into cmpxchg.h x86: add cmpxchg_flag() variant x86/ticketlocks: use cmpxchg_flag for trylock x86: use cmpxchg_flag() where applicable x86: report xchg/cmpxchg/xadd usage errors consistently x86: add local and sync variants of xadd x86: use xadd helper more widely
arch/x86/include/asm/atomic.h | 4 +- arch/x86/include/asm/atomic64_64.h | 4 +- arch/x86/include/asm/cacheflush.h | 2 +- arch/x86/include/asm/cmpxchg.h | 223 +++++++++++++++++++++++++++++++++ arch/x86/include/asm/cmpxchg_32.h | 128 ++----------------- arch/x86/include/asm/cmpxchg_64.h | 131 ------------------- arch/x86/include/asm/rwsem.h | 11 +-- arch/x86/include/asm/spinlock.h | 140 +++++++-------------- arch/x86/include/asm/spinlock_types.h | 22 +++- arch/x86/include/asm/uv/uv_bau.h | 4 +- arch/x86/kernel/acpi/boot.c | 10 +- arch/x86/kernel/cpu/mcheck/mce.c | 2 +- arch/x86/xen/p2m.c | 10 +- 13 files changed, 321 insertions(+), 370 deletions(-)
-- 1.7.6
| |