Messages in this thread | | | Date | Wed, 12 Oct 2011 08:51:32 -0400 | From | Don Zickus <> | Subject | Re: [PATCH 1/3] x86, reboot: Use NMI instead of REBOOT_VECTOR to stop cpus |
| |
On Wed, Oct 12, 2011 at 10:35:42AM +0800, Chen Gong wrote: > 于 2011/10/11 23:24, Don Zickus 写道: > >+ > >+ /* sync above data before sending NMI */ > >+ wmb(); > >+ > >+ apic->send_IPI_allbutself(NMI_VECTOR); > >+ > >+ /* > >+ * Don't wait longer than a second if the caller > >+ * didn't ask us to wait. > >+ */ > >+ timeout = USEC_PER_SEC; > >+ while (num_online_cpus()> 1&& (wait || timeout--)) > >+ udelay(1); > > In this patch and next patch, how about using the same logic in commit 74d91e3c6
I guess I don't understand why I would do that. That commit doesn't seem to have a way to break out of the while loop and it does not take into account the 'wait' variable the virt folks needed. The only thing that could be usable seems to be the 'touch_nmi_watchdog', but in that case if the other cpus haven't hit the NMI yet, I would be happy for other NMI sources to trigger to, to help move things along. :-)
The above code snippet is what is currently there and that seems to work well, so I didn't want to change to much when moving from the IRQ path to the NMI path.
Perhaps I am missing something?
Cheers, Don -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |