lkml.org 
[lkml]   [2015]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 0/6] x86: reduce paravirtualized spinlock overhead
    AFAIK there are no outstanding questions for more than one month now.
    I'd appreciate some feedback or accepting these patches.


    Juergen

    On 04/30/2015 12:53 PM, Juergen Gross wrote:
    > Paravirtualized spinlocks produce some overhead even if the kernel is
    > running on bare metal. The main reason are the more complex locking
    > and unlocking functions. Especially unlocking is no longer just one
    > instruction but so complex that it is no longer inlined.
    >
    > This patch series addresses this issue by adding two more pvops
    > functions to reduce the size of the inlined spinlock functions. When
    > running on bare metal unlocking is again basically one instruction.
    >
    > Compile tested with CONFIG_PARAVIRT_SPINLOCKS on and off, 32 and 64
    > bits.
    >
    > Functional testing on bare metal and as Xen dom0.
    >
    > Correct patching verified by disassembly of active kernel.
    >
    > Juergen Gross (6):
    > x86: use macro instead of "0" for setting TICKET_SLOWPATH_FLAG
    > x86: move decision about clearing slowpath flag into arch_spin_lock()
    > x86: introduce new pvops function clear_slowpath
    > x86: introduce new pvops function spin_unlock
    > x86: switch config from UNINLINE_SPIN_UNLOCK to INLINE_SPIN_UNLOCK
    > x86: remove no longer needed paravirt_ticketlocks_enabled
    >
    > arch/x86/Kconfig | 1 -
    > arch/x86/include/asm/paravirt.h | 13 +++++++++
    > arch/x86/include/asm/paravirt_types.h | 12 ++++++++
    > arch/x86/include/asm/spinlock.h | 53 ++++++++++++-----------------------
    > arch/x86/include/asm/spinlock_types.h | 3 +-
    > arch/x86/kernel/kvm.c | 14 +--------
    > arch/x86/kernel/paravirt-spinlocks.c | 42 +++++++++++++++++++++++++--
    > arch/x86/kernel/paravirt.c | 12 ++++++++
    > arch/x86/kernel/paravirt_patch_32.c | 25 +++++++++++++++++
    > arch/x86/kernel/paravirt_patch_64.c | 24 ++++++++++++++++
    > arch/x86/xen/spinlock.c | 23 +--------------
    > include/linux/spinlock_api_smp.h | 2 +-
    > kernel/Kconfig.locks | 7 +++--
    > kernel/Kconfig.preempt | 3 +-
    > kernel/locking/spinlock.c | 2 +-
    > lib/Kconfig.debug | 1 -
    > 16 files changed, 154 insertions(+), 83 deletions(-)
    >



    \
     
     \ /
      Last update: 2015-06-16 17:01    [W:4.160 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site