• Frederic Weisbecker's avatar
    posix-timers: Spare workqueue if there is no full dynticks CPU to kick · d4283c65
    Frederic Weisbecker authored
    After a posix cpu timer is set, a workqueue is scheduled in order to
    kick the full dynticks CPUs and let them restart their tick if
    necessary in case the task they are running is concerned by the
    new timer.
    
    This kick is implemented by way of IPIs, which require interrupts
    to be enabled, hence the need for a workqueue to raise them because
    the posix cpu timer set path has interrupts disabled.
    
    Now if there is no full dynticks CPU on the system, the workqueue is
    still scheduled but it simply won't send any IPI and return immediately.
    
    So lets spare that worqueue when it is not needed.
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    d4283c65
posix-cpu-timers.c 39.6 KB