On Mon, 2003-12-08 at 20:24, Matthew Wilcox wrote: > On Tue, Dec 09, 2003 at 11:17:56AM +1100, Peter Chubb wrote: > > Here's a fix for non-preemption safety in perfmon.c. > > > > I haven't tried it while running a preemption stress test, but this > > allows q-syscollect to work. > > > > ===== arch/ia64/kernel/perfmon.c 1.67 vs edited ===== > > --- 1.67/arch/ia64/kernel/perfmon.c Tue Oct 28 17:36:50 2003 > > +++ edited/arch/ia64/kernel/perfmon.c Tue Dec 9 10:55:58 2003 > > @@ -5475,7 +5475,7 @@ > > int this_cpu; > > int ret; > > > > - this_cpu = smp_processor_id(); > > + this_cpu = get_cpu(); > > min = pfm_stats[this_cpu].pfm_ovfl_intr_cycles_min; > > max = pfm_stats[this_cpu].pfm_ovfl_intr_cycles_max; > > surely there needs to be a matching put_cpu() or else preempt is forever > disabled. no? I agree. (from include/linux/smp.h) #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() mh -- Martin Hicks || mort@bork.org || PGP/GnuPG: 0x4C7F2BEE