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 -3.0-testing <patchbot-3.0-testing@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Apr 2006 12:30:22 +0000
Delivery-date: Thu, 27 Apr 2006 05:31:43 -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 83072d72084a873e81ca188dcf9058072dba1a8d
# Parent  1d1a994059948396480130af9e2175c148295590
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 1d1a99405994 -r 83072d72084a xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Thu Apr 27 09:47:42 2006 +0100
+++ b/xen/arch/x86/domain.c     Thu Apr 27 09:58:50 2006 +0100
@@ -143,7 +143,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>