• Thomas Gleixner's avatar
    hrtimers: Move SMP function call to thread context · 2d06fa0f
    Thomas Gleixner authored
    commit 5ec2481b upstream.
    
    smp_call_function_* must not be called from softirq context.
    
    But clock_was_set() which calls on_each_cpu() is called from softirq
    context to implement a delayed clock_was_set() for the timer interrupt
    handler. Though that almost never gets invoked. A recent change in the
    resume code uses the softirq based delayed clock_was_set to support
    Xens resume mechanism.
    
    linux-next contains a new warning which warns if smp_call_function_*
    is called from softirq context which gets triggered by that Xen
    change.
    
    Fix this by moving the delayed clock_was_set() call to a work context.
    Reported-and-tested-by: default avatarArtem Savkov <artem.savkov@gmail.com>
    Reported-by: default avatarSasha Levin <sasha.levin@oracle.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: H. Peter Anvin <hpa@zytor.com>,
    Cc: Konrad Wilk <konrad.wilk@oracle.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: xen-devel@lists.xen.org
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2d06fa0f
hrtimer.c 47.6 KB