• Peter Zijlstra's avatar
    sched: Add irq_{enter,exit}() to scheduler_ipi() · c5d753a5
    Peter Zijlstra authored
    Ensure scheduler_ipi() calls irq_{enter,exit} when it does some actual
    work. Traditionally we never did any actual work from the resched IPI
    and all magic happened in the return from interrupt path.
    
    Now that we do do some work, we need to ensure irq_{enter,exit} are
    called so that we don't confuse things.
    
    This affects things like timekeeping, NO_HZ and RCU, basically
    everything with a hook in irq_enter/exit.
    
    Explicit examples of things going wrong are:
    
      sched_clock_cpu() -- has a callback when leaving NO_HZ state to take
                        a new reading from GTOD and TSC. Without this
                        callback, time is stuck in the past.
    
      RCU -- needs in_irq() to work in order to avoid some nasty deadlocks
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    c5d753a5
sched.c 220 KB