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] Fix CPU detection and initialisation. We now do early de

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Fix CPU detection and initialisation. We now do early detection very
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Tue, 31 May 2005 08:22:44 +0000
Delivery-date: Tue, 31 May 2005 09:01:05 +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 Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1601, 2005/05/31 09:22:44+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Fix CPU detection and initialisation. We now do early detection very
        early, but pushed full initialisation to somewhat later when other
        infrastructure is properly ready.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 apic.c       |    3 +--
 cpu/common.c |    1 +
 setup.c      |   18 +++++++++---------
 3 files changed, 11 insertions(+), 11 deletions(-)


diff -Nru a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
--- a/xen/arch/x86/apic.c       2005-05-31 05:01:51 -04:00
+++ b/xen/arch/x86/apic.c       2005-05-31 05:01:51 -04:00
@@ -493,14 +493,13 @@
 static int __init detect_init_APIC (void)
 {
     u32 h, l, features;
-    extern void get_cpu_vendor(struct cpuinfo_x86*);
 
     /* Disabled by kernel option? */
     if (enable_local_apic < 0)
         return -1;
 
     /* Workaround for us being called before identify_cpu(). */
-    get_cpu_vendor(&boot_cpu_data);
+    /*get_cpu_vendor(&boot_cpu_data); Not for Xen */
 
     switch (boot_cpu_data.x86_vendor) {
     case X86_VENDOR_AMD:
diff -Nru a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
--- a/xen/arch/x86/cpu/common.c 2005-05-31 05:01:51 -04:00
+++ b/xen/arch/x86/cpu/common.c 2005-05-31 05:01:51 -04:00
@@ -223,6 +223,7 @@
                c->x86_mask = tfms & 15;
                if (cap0 & (1<<19))
                        c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8;
+               c->x86_capability[0] = cap0; /* Added for Xen bootstrap */
        }
 
        early_intel_workaround(c);
diff -Nru a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      2005-05-31 05:01:51 -04:00
+++ b/xen/arch/x86/setup.c      2005-05-31 05:01:51 -04:00
@@ -85,7 +85,7 @@
 
 extern unsigned long cpu0_stack[];
 
-struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1 };
+struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
 
 #if defined(CONFIG_X86_64)
 unsigned long mmu_cr4_features = X86_CR4_PSE | X86_CR4_PGE | X86_CR4_PAE;
@@ -144,6 +144,8 @@
 {
     int i;
 
+    early_cpu_init();
+
     /* Unmap the first page of CPU0's stack. */
     memguard_guard_stack(cpu0_stack);
 
@@ -161,14 +163,6 @@
         GDT_VIRT_START(current) + FIRST_RESERVED_GDT_BYTE,
         virt_to_phys(gdt_table) >> PAGE_SHIFT, 1, PAGE_HYPERVISOR);
 
-    /* Process CPU type information. */
-    early_cpu_init();
-    identify_cpu(&boot_cpu_data);
-    if ( cpu_has_fxsr )
-        set_in_cr4(X86_CR4_OSFXSR);
-    if ( cpu_has_xmm )
-        set_in_cr4(X86_CR4_OSXMMEXCPT);
-
     find_smp_config();
 
     smp_alloc_memory();
@@ -198,6 +192,12 @@
     arch_init_memory();
 
     scheduler_init();  
+
+    identify_cpu(&boot_cpu_data);
+    if ( cpu_has_fxsr )
+        set_in_cr4(X86_CR4_OSFXSR);
+    if ( cpu_has_xmm )
+        set_in_cr4(X86_CR4_OSXMMEXCPT);
 
     if ( opt_nosmp )
         max_cpus = 0;

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Fix CPU detection and initialisation. We now do early detection very, BitKeeper Bot <=