lkml.org 
[lkml]   [2002]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.4.19-rc3-ac2 SMP
On Wed, 24 Jul 2002, James Cleverdon wrote:

> Ah ha! Note that while the CPU records in the {MPS,ACPI/MADT} table are in
> numerical order (as preserved in raw_phys_apicid), the boot CPU is # 02. The
> flat code in smp_boot_cpus assumes that the boot CPU will be the first record
> in the list. Oops.

Ok i'll give it a whirl, in that case how about the following code to do
the BSP check in another area too?

Index: linux-2.4.19-rc3-ac2/arch/i386/kernel/smpboot.c
===================================================================
RCS file: /home/zwane/source/cvs_rep/linux-2.4.19-rc3-ac2/arch/i386/kernel/smpboot.c,v
retrieving revision 1.2
diff -u -r1.2 smpboot.c
--- linux-2.4.19-rc3-ac2/arch/i386/kernel/smpboot.c 2002/07/25 06:06:56 1.2
+++ linux-2.4.19-rc3-ac2/arch/i386/kernel/smpboot.c 2002/07/25 06:15:05
@@ -46,6 +46,7 @@
#include <asm/mtrr.h>
#include <asm/pgalloc.h>
#include <asm/smpboot.h>
+#include <asm/msr.h>

/* Set if we find a B stepping CPU */
static int smp_b_stepping;
@@ -229,6 +230,14 @@
return res;
}

+int smp_cpu_is_bsp (void)
+{
+ unsigned long l, h;
+
+ rdmsr(MSR_IA32_APICBASE, l, h);
+ return (l & MSR_IA32_APICBASE_BSP);
+}
+
static void __init synchronize_tsc_bp (void)
{
int i;
@@ -1067,7 +1076,7 @@
connect_bsp_APIC();
setup_local_APIC();

- if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid)
+ if (!smp_cpu_is_bsp())
BUG();

/*
--
function.linuxpower.ca

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:27    [W:0.065 / U:1.200 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site