WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] on_selected_cpus() must not send IPIs with empty target

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] on_selected_cpus() must not send IPIs with empty target masks.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 23 Mar 2006 19:32:07 +0000
Delivery-date: Thu, 23 Mar 2006 19:33:38 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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 b7295a83206e7924d7703a9b22ffe6392dc8fdb8
# Parent  8f722ac17efa4ba84eb6c678c7f33dab82fceb3e
on_selected_cpus() must not send IPIs with empty target masks.
This causes send accept errors on Pentium/P6 .

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

diff -r 8f722ac17efa -r b7295a83206e xen/arch/x86/smp.c
--- a/xen/arch/x86/smp.c        Thu Mar 23 16:37:37 2006
+++ b/xen/arch/x86/smp.c        Thu Mar 23 17:47:43 2006
@@ -106,6 +106,16 @@
     __send_IPI_shortcut(APIC_DEST_SELF, vector);
 }
 
+static inline void check_IPI_mask(cpumask_t cpumask)
+{
+    /*
+     * Sanity, and necessary. An IPI with no target generates a send accept
+     * error with Pentium and P6 APICs.
+     */
+    ASSERT(cpus_subset(cpumask, cpu_online_map));
+    ASSERT(!cpus_empty(cpumask));
+}
+
 /*
  * This is only used on smaller machines.
  */
@@ -115,6 +125,8 @@
     unsigned long cfg;
     unsigned long flags;
 
+    check_IPI_mask(cpumask);
+
     local_irq_save(flags);
 
     /*
@@ -145,6 +157,8 @@
 {
     unsigned long cfg, flags;
     unsigned int query_cpu;
+
+    check_IPI_mask(mask);
 
     /*
      * Hack. The clustered APIC addressing mode doesn't allow us to send 
@@ -304,6 +318,9 @@
 
     ASSERT(local_irq_is_enabled());
 
+    if ( nr_cpus == 0 )
+        return 0;
+
     data.func = func;
     data.info = info;
     data.wait = wait;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] on_selected_cpus() must not send IPIs with empty target masks., Xen patchbot -unstable <=