Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 11 Nov 2010 19:23:41 +0800 | From | DDD <> | Subject | Re: [V3 PATCH] x86: avoid calling arch_trigger_all_cpu_backtrace() at the same time on SMP |
| |
Ingo Molnar wrote: > Hm, another thing i noticed is that there's two of these: > >> #ifdef ARCH_HAS_NMI_WATCHDOG >> +/* "in progress" flag of arch_trigger_all_cpu_backtrace */ >> +static unsigned long backtrace_flag; >> + >> void arch_trigger_all_cpu_backtrace(void) >> { >> int i; >> + unsigned long flags; >> + >> + /* >> + * Have to disable irq here, as the >> + * arch_trigger_all_cpu_backtrace() could be >> + * triggered by "spin_lock()" with irqs on. >> + */ >> + local_irq_save(flags); > >> +/* "in progress" flag of arch_trigger_all_cpu_backtrace */ >> +static unsigned long backtrace_flag; >> + >> void arch_trigger_all_cpu_backtrace(void) >> { >> int i; >> + unsigned long flags; >> + >> + /* >> + * Have to disable irq here, as the >> + * arch_trigger_all_cpu_backtrace() could be >> + * triggered by "spin_lock()" with irqs on. >> + */ >> + local_irq_save(flags); >> + >> + if (test_and_set_bit(0, &backtrace_flag)) > > A fair amount of code is being duplicated in two places - which is not nice. Lets > try to create a shared facility instead?
Yep, It is a good idea, I will try to do that. :-)
Dongdong
> > Thanks, > > Ingo >
| ![\](/images/icornerr.gif) |