lkml.org 
[lkml]   [2013]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -v5 5/5] x86,smp: limit spinlock delay on virtual machines

    * Rik van Riel <riel@redhat.com> wrote:

    > --- a/arch/x86/kernel/cpu/hypervisor.c
    > +++ b/arch/x86/kernel/cpu/hypervisor.c
    > @@ -76,6 +76,8 @@ void __init init_hypervisor_platform(void)
    >
    > init_hypervisor(&boot_cpu_data);
    >
    > + init_guest_spinlock_delay();
    > +
    > if (x86_hyper->init_platform)
    > x86_hyper->init_platform();
    > }
    > diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
    > index 64e33ef..fbc5ff3 100644
    > --- a/arch/x86/kernel/smp.c
    > +++ b/arch/x86/kernel/smp.c
    > @@ -116,8 +116,25 @@ static bool smp_no_nmi_ipi = false;
    > #define DELAY_SHIFT 8
    > #define DELAY_FIXED_1 (1<<DELAY_SHIFT)
    > #define MIN_SPINLOCK_DELAY (1 * DELAY_FIXED_1)
    > -#define MAX_SPINLOCK_DELAY (16000 * DELAY_FIXED_1)
    > +#define MAX_SPINLOCK_DELAY_NATIVE (16000 * DELAY_FIXED_1)
    > +#define MAX_SPINLOCK_DELAY_GUEST (16 * DELAY_FIXED_1)
    > #define DELAY_HASH_SHIFT 6
    > +
    > +/*
    > + * Modern Intel and AMD CPUs tell the hypervisor when a guest is
    > + * spinning excessively on a spinlock. The hypervisor will then
    > + * schedule something else, effectively taking care of the backoff
    > + * for us. Doing our own backoff on top of the hypervisor's pause
    > + * loop exit handling can lead to excessively long delays, and
    > + * performance degradations. Limit the spinlock delay in virtual
    > + * machines to a smaller value. Called from init_hypervisor_platform
    > + */
    > +static int __read_mostly max_spinlock_delay = MAX_SPINLOCK_DELAY_NATIVE;
    > +void __init init_guest_spinlock_delay(void)
    > +{
    > + max_spinlock_delay = MAX_SPINLOCK_DELAY_GUEST;
    > +}

    The kernel build will be sad on !SMP configs.

    Thanks,

    Ingo


    \
     
     \ /
      Last update: 2013-02-07 12:43    [W:9.427 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site