This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-changelog] Occasionally large smp machines fail to reboot properly

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Occasionally large smp machines fail to reboot properly and die under
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Apr 2006 10:33:08 +0000
Delivery-date: Thu, 27 Apr 2006 03:46:10 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID a898a6510c5db4e3d1f69d40fcacb540643b0f22
# Parent  e42ed43320535a13005c5cce7f3afb382d9c2af5
Occasionally large smp machines fail to reboot properly and die under
an IPI storm of smp_call_function() to machine_reboot.  Only the boot
processor needs to run machine_restart, so send an IPI to CPU0.

Original patch by: Ryan Harper <ryanh@xxxxxxxxxx>

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r e42ed4332053 -r a898a6510c5d xen/arch/x86/shutdown.c
--- a/xen/arch/x86/shutdown.c   Thu Apr 27 09:49:48 2006 +0100
+++ b/xen/arch/x86/shutdown.c   Thu Apr 27 09:56:21 2006 +0100
@@ -218,7 +218,9 @@ void machine_restart(char * __unused)
     /* Ensure we are the boot CPU. */
     if ( GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid )
-        smp_call_function((void *)machine_restart, NULL, 1, 0);
+        /* Send IPI to the boot CPU (logical cpu 0). */
+        on_selected_cpus(cpumask_of_cpu(0), (void *)machine_restart,
+                         NULL, 1, 0);
         for ( ; ; )

Xen-changelog mailing list

<Prev in Thread] Current Thread [Next in Thread>