First  |  Prev |  Next  |  Last
Pages: 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552
[PATCH RFC 12/12] x86/pvticketlock: use callee-save for unlock_kick as well
The unlock code is typically inlined throughout the kernel, so its useful to make sure there's minimal register pressure overhead from the presence of the unlock_tick pvop call. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge(a)citrix.com> --- arch/x86/include/asm/paravirt.h | 2 +- arch/x86/inc... 16 Jul 2010 22:02
[PATCH RFC 00/12] X86 ticket lock cleanups and improvements
[ Sorry, resent with sensible threading and Nick's email corrected ] Hi all, This series does three things: - A general cleanup of the ticketlock implementation, including moving most of it into C, removing a pile of inline asm and ifdefs. - Convert the PV spinlock mechanism (enabled with CONFIG_P... 16 Jul 2010 22:02
[PATCH RFC 11/12] x86/pvticketlock: use callee-save for lock_spinning
Although the lock_spinning calls in the spinlock code are on the uncommon path, their presence can cause the compiler to generate many more register save/restores in the function pre/postamble, which is in the fast path. To avoid this, convert it to using the pvops callee-save calling convention, which defers all ... 16 Jul 2010 22:02
[PATCH RFC 01/12] x86/ticketlock: clean up types and accessors
A few cleanups to the way spinlocks are defined and accessed: - define __ticket_t which is the size of a spinlock ticket (ie, enough bits to hold all the cpus) - Define struct arch_spinlock as a union containing plain slock and the head and tail tickets - Use head and tail to implement some of the spinloc... 16 Jul 2010 22:02
[PATCH RFC 02/12] x86/ticketlock: convert spin loop to C
The inner loop of __ticket_spin_lock isn't doing anything very special, so reimplement it in C. For the 8 bit ticket lock variant, we use a register union to get direct access to the lower and upper bytes in the tickets, but unfortunately gcc won't generate a direct comparison between the two halves of the regist... 16 Jul 2010 22:02
[PATCH RFC 06/12] x86/ticketlock: make __ticket_spin_trylock common
Make trylock code common regardless of ticket size. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge(a)citrix.com> --- arch/x86/include/asm/spinlock.h | 55 +++++++++----------------------- arch/x86/include/asm/spinlock_types.h | 3 ++ 2 files changed, 19 insertions(+), 39 deletions(-) diff -... 16 Jul 2010 22:02
[PATCH RFC 10/12] x86/pvticketlock: keep count of blocked cpus
When a CPU blocks by calling into __ticket_lock_spinning, keep a count in the spinlock. This allows __ticket_lock_kick to more accurately tell whether it has any work to do (in many cases, a spinlock may be contended, but none of the waiters have gone into blocking). This adds two locked instructions to the spin... 16 Jul 2010 22:02
[PATCH RFC 04/12] x86/ticketlock: make large and small ticket versions of spin_lock the same
Make the bulk of __ticket_spin_lock look identical for large and small number of cpus. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge(a)citrix.com> --- arch/x86/include/asm/spinlock.h | 23 ++++++++--------------- 1 files changed, 8 insertions(+), 15 deletions(-) diff --git a/arch/x86/include/asm/sp... 16 Jul 2010 22:02
[PATCH RFC 03/12] x86/ticketlock: Use C for __ticket_spin_unlock
If we don't need to use a locked inc for unlock, then implement it in C. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge(a)citrix.com> --- arch/x86/include/asm/spinlock.h | 33 ++++++++++++++++++--------------- 1 files changed, 18 insertions(+), 15 deletions(-) diff --git a/arch/x86/include/asm/spinlo... 6 Aug 2010 17:06
[PATCH RFC 10/12] x86/pvticketlock: keep count of blocked cpus
When a CPU blocks by calling into __ticket_lock_spinning, keep a count in the spinlock. This allows __ticket_lock_kick to more accurately tell whether it has any work to do (in many cases, a spinlock may be contended, but none of the waiters have gone into blocking). This adds two locked instructions to the spin... 16 Jul 2010 22:02
First  |  Prev |  Next  |  Last
Pages: 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552