[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/4] x86/nmi: wait for all CPUs in check_nmi_watchdog()
The counting of a CPUs NMIs in check_nmi_watchdog() is only reliable if all CPUs have been spinning for 5 or more ticks. There may be delays in waking other CPUs from deep power states that can mean that when the counts are checked CPUs haven't run for long enough. Fix this by waiting for all CPUs to have delayed in wait_for_nmis(). Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> --- xen/arch/x86/nmi.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index 07488da..4f330d8 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -136,9 +136,7 @@ int __init check_nmi_watchdog (void) /* Wait for 10 ticks. Busy-wait on all CPUs: the LAPIC counter that * the NMI watchdog uses only runs while the core's not halted */ - if ( nmi_watchdog == NMI_LOCAL_APIC ) - smp_call_function(wait_for_nmis, NULL, 0); - wait_for_nmis(NULL); + on_selected_cpus(&cpu_online_map, wait_for_nmis, NULL, 1); for_each_online_cpu ( cpu ) { -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |