perf: Fix perf_event_do_pending() fallback callsite

Paul questioned the context in which we should call
perf_event_do_pending(). After looking at that I found that it should be
called from IRQ context these days, however the fallback call-site is
placed in softirq context. Ammend this by placing the callback in the IRQ
timer path.

Reported-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1263374859.4244.192.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by Peter Zijlstra and committed by Ingo Molnar fe432200 b00eca8c

+1 -2
+1 -2
kernel/timer.c
··· 1198 run_local_timers(); 1199 rcu_check_callbacks(cpu, user_tick); 1200 printk_tick(); 1201 scheduler_tick(); 1202 run_posix_cpu_timers(p); 1203 } ··· 1209 static void run_timer_softirq(struct softirq_action *h) 1210 { 1211 struct tvec_base *base = __get_cpu_var(tvec_bases); 1212 - 1213 - perf_event_do_pending(); 1214 1215 hrtimer_run_pending(); 1216
··· 1198 run_local_timers(); 1199 rcu_check_callbacks(cpu, user_tick); 1200 printk_tick(); 1201 + perf_event_do_pending(); 1202 scheduler_tick(); 1203 run_posix_cpu_timers(p); 1204 } ··· 1208 static void run_timer_softirq(struct softirq_action *h) 1209 { 1210 struct tvec_base *base = __get_cpu_var(tvec_bases); 1211 1212 hrtimer_run_pending(); 1213