On 10/16/2012 10:01 PM, Paul E. McKenney wrote: > On Tue, Oct 16, 2012 at 01:28:10PM +0530, Srivatsa S. Bhat wrote: >> The CPU_STARTING notifiers are supposed to be run with irqs disabled. But the >> perf_cpu_notifier() macro invokes them without doing that. Fix it. > > Color me confused...
Hehe, I believe the context provided by diff tricked you ;-) The function I am referring to is perf_cpu_notifier(), not perf_event_task_tick() :-) Regards, Srivatsa S. Bhat > Isn't perf_event_task_tick() invoked only > from scheduler_tick(), which always has interrupts disabled? > > Or are you needing to invoke it from somewhere else? > > Thanx, Paul > >> Signed-off-by: Srivatsa S. Bhat <srivatsa.b...@linux.vnet.ibm.com> >> --- >> >> include/linux/perf_event.h | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h >> index 2e90235..0647805 100644 >> --- a/include/linux/perf_event.h >> +++ b/include/linux/perf_event.h >> @@ -803,10 +803,13 @@ static inline void perf_event_task_tick(void) >> { } >> do { >> \ >> static struct notifier_block fn##_nb __cpuinitdata = \ >> { .notifier_call = fn, .priority = CPU_PRI_PERF }; \ >> + unsigned long flags; \ >> fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE, \ >> (void *)(unsigned long)smp_processor_id()); \ >> + local_irq_save(flags); \ >> fn(&fn##_nb, (unsigned long)CPU_STARTING, \ >> (void *)(unsigned long)smp_processor_id()); \ >> + local_irq_restore(flags); \ >> fn(&fn##_nb, (unsigned long)CPU_ONLINE, \ >> (void *)(unsigned long)smp_processor_id()); \ >> register_cpu_notifier(&fn##_nb); \ >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/