summaryrefslogtreecommitdiff
path: root/kernel/softirq.c
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2011-07-19 15:07:25 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2011-07-20 10:50:11 -0700
commitc5d753a55ac92e09816d410cd17093813f1a904b (patch)
tree162c63edcc463e18d50fb5b5be479785f02222c4 /kernel/softirq.c
parent10f39bb1b2c1923ca73e70cb13aeee0e9b822d8f (diff)
downloadlwn-c5d753a55ac92e09816d410cd17093813f1a904b.tar.gz
lwn-c5d753a55ac92e09816d410cd17093813f1a904b.zip
sched: Add irq_{enter,exit}() to scheduler_ipi()
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: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/softirq.c')
0 files changed, 0 insertions, 0 deletions