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-devel

[Xen-devel] [PATCH 4/5] x86: adjust x2apic section placement

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 4/5] x86: adjust x2apic section placement
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Wed, 15 Dec 2010 11:20:05 +0000
Cc: Yinghai Lu <yinghai@xxxxxxxxxx>
Delivery-date: Wed, 15 Dec 2010 03:22:13 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -953,18 +953,17 @@ no_apic:
     return -1;
 }
 
-void x2apic_setup(void)
+void x2apic_ap_setup(void)
+{
+    if ( x2apic_enabled )
+        __enable_x2apic();
+}
+
+void __init x2apic_bsp_setup(void)
 {
     struct IO_APIC_route_entry **ioapic_entries = NULL;
     uint64_t msr_content;
 
-    if ( smp_processor_id() != 0 )
-    {
-        if ( x2apic_enabled )
-            __enable_x2apic();
-        return;
-    }
-
     if ( !cpu_has_x2apic )
         return;
 
--- a/xen/arch/x86/genapic/x2apic.c
+++ b/xen/arch/x86/genapic/x2apic.c
@@ -27,7 +27,7 @@
 #include <xen/smp.h>
 #include <asm/mach-default/mach_mpparse.h>
 
-static int x2apic_phys; /* By default we use logical cluster mode. */
+static int __initdata x2apic_phys; /* By default we use logical cluster mode. 
*/
 boolean_param("x2apic_phys", x2apic_phys);
 
 static void init_apic_ldr_x2apic_phys(void)
@@ -134,7 +134,7 @@ static const struct genapic apic_x2apic_
     .send_IPI_self = send_IPI_self_x2apic
 };
 
-const struct genapic *apic_x2apic_probe(void)
+const struct genapic *__init apic_x2apic_probe(void)
 {
     return x2apic_phys ? &apic_x2apic_phys : &apic_x2apic_cluster;
 }
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1190,7 +1190,7 @@ void __init __start_xen(unsigned long mb
 
     init_cpu_to_node();
 
-    x2apic_setup();
+    x2apic_bsp_setup();
 
     init_IRQ();
 
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -195,7 +195,7 @@ void smp_callin(void)
      * update until we finish. We are free to set up this CPU: first the APIC.
      */
     Dprintk("CALLIN, before setup_local_APIC().\n");
-    x2apic_setup();
+    x2apic_ap_setup();
     setup_local_APIC();
     map_cpu_to_logical_apicid();
 
--- a/xen/include/asm-x86/apic.h
+++ b/xen/include/asm-x86/apic.h
@@ -25,7 +25,8 @@ extern int apic_verbosity;
 extern int x2apic_enabled;
 extern int directed_eoi_enabled;
 
-void x2apic_setup(void);
+void x2apic_bsp_setup(void);
+void x2apic_ap_setup(void);
 const struct genapic *apic_x2apic_probe(void);
 
 /*



Attachment: x86-x2apic-sections.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 4/5] x86: adjust x2apic section placement, Jan Beulich <=