lkml.org 
[lkml]   [2002]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: 2.4.19-rc3-ac2 SMP
Date
On Wednesday 24 July 2002 08:26 am, Zwane Mwaikambo wrote:
[ Snip! ]
>raw_phys_apicid[]= 00 01 02 03 00 00 00 00 00 00 00 00 00 00 00 00 00
>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> cpu_2_logical_apicid[]= 01 01 02 08 FF FF FF FF FF FF FF FF FF FF FF FF FF
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
> cpu_2_physical_apicid[]= 02 00 01 03 FF FF FF FF FF FF FF FF FF FF FF FF FF
> FF F F FF FF FF FF FF FF FF FF FF FF FF FF FF

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.

Try the attached patch and see if it helps.

[ Snip! ]

>
> Regards,
> Zwane

--
James Cleverdon
IBM xSeries Linux Solutions
{jamesclv(Unix, preferred), cleverdj(Notes)} at us dot ibm dot com
--- ac3/arch/i386/kernel/smpboot.c.df Tue Jul 23 15:02:49 2002
+++ ac3/arch/i386/kernel/smpboot.c Wed Jul 24 18:02:24 2002
@@ -1077,6 +1077,7 @@
*/
Dprintk("CPU present map: %lx\n", phys_cpu_present_map);

+ cpu = 1;
for (bit = 0; bit < NR_CPUS; bit++) {
if (!(phys_cpu_present_map & (1UL << bit)))
continue;
@@ -1093,7 +1094,7 @@
else if (clustered_apic_logical)
log_apicid = ((bit >> 2) << 4) | (1 << (bit & 0x3));
else
- log_apicid = 1u << bit;
+ log_apicid = 1u << cpu;

do_boot_cpu(phys_apicid, log_apicid);

@@ -1104,6 +1105,8 @@
(phys_cpu_present_map & (1ul << bit)))
printk("CPU #%d not responding - cannot use it.\n",
bit);
+ else
+ ++cpu;
}

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