linux-2.4.23 dual Xeon detection problem + patch (fwd)

From: Peter Breitenlohner
Date: Sun Dec 14 2003 - 07:18:32 EST


Hi,

originally I sent this to the maintainer (Ingo Molnar), but since I didn't
get any response for about two weeks I am now sending this to the
developer's list (with the patch -- originally as attachement -- now
inlined).

regards
Peter Breitenlohner <peb@xxxxxxxxxxxx>

-------------------- start of patch ------------------
--- linux-2.4.23/include/asm-i386/smpboot.h.orig 2003-08-25 13:44:43.000000000 +0200
+++ linux-2.4.23/include/asm-i386/smpboot.h 2003-12-02 16:49:46.000000000 +0100
@@ -73,11 +73,9 @@
*/
static inline int cpu_present_to_apicid(int mps_cpu)
{
- if (clustered_apic_mode == CLUSTERED_APIC_XAPIC)
- return raw_phys_apicid[mps_cpu];
if(clustered_apic_mode == CLUSTERED_APIC_NUMAQ)
return (mps_cpu/4)*16 + (1<<(mps_cpu%4));
- return mps_cpu;
+ return raw_phys_apicid[mps_cpu];
}

static inline unsigned long apicid_to_phys_cpu_present(int apicid)
--------------------- end of patch -------------------

---------- Forwarded message ----------
Date: Tue, 2 Dec 2003 17:45:40 +0100 (CET)
From: Peter Breitenlohner <peb@xxxxxxxxxxxx>
To: Ingo Molnar <mingo@xxxxxxxxxx>
Subject: linux-2.4.23 dual Xeon detection problem + patch

Hi Ingo,

here my bug report with patch, following the REPORTING-BUGS guidelines

1. linux-2.4.23 Intel E7505 dual Xeon detection failure

2. the linux-2.4.23 kernel detects but fails to boot the second physical
processor on our ASUS PP-DLW dual Xeon boards with Intel 7505 chipset.
(There were no such problems with the 2.4.21 kernel.)

3. keywords: kernel, smp, apic

4. kernel version: 2.4.23

7.2. extract from /proc/cpuinfo (with patch)

processor: 0, 1, 2, 3
vendor_id: GenuineIntel
cpu family: 15
model: 2
model name: Intel(R) Xeon(TM) CPU 2.66GHz
stepping: 5

8. The relevant early kernel messages (without patch) were:

Processor #0 Pentium 4(tm) XEON(tm) APIC version 20
Processor #6 Pentium 4(tm) XEON(tm) APIC version 20
Processor #1 Pentium 4(tm) XEON(tm) APIC version 20
Processor #7 Pentium 4(tm) XEON(tm) APIC version 20
........
Total of 2 processors activated (10616.83 BogoMIPS).

After adding some printk's into linux-2.4.23/arch/i386/kernel/smpboot.c
I found out that in the function smp_boot_cpus in the
for (bit = 0; bit < NR_CPUS; bit++)
loop (line 1109)

bit=0 => apicid=0 = boot CPU
bit=1 => apicid=1 sibling of boot CPU
bit=2 => apicid=2 bad
bit=3 => apicid=3 bad

with the attached patch I got

bit=0 => apicid=0 = boot CPU
bit=1 => apicid=6 second CPU
bit=2 => apicid=1 sibling of boot CPU
bit=3 => apicid=7 sibling of second CPU

and a final

Total of 4 processors activated (21233.66 BogoMIPS).

I know quite well, that the attached patch is a raw fix and probably solves
only some of the problems caused by the difference between physical and
logical CPU ids, but it seems to work quite well in our case.

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