Re: IO APIC error

Andi Kleen (ak@muc.de)
03 May 2002 01:57:45 +0200


"Kosta Porotchkin" <kporotchkin@gmx.net> writes:

>1. For some reason the "dmesg" is not displaying an early kernel messages.
>The log started somewhere from CPU #2 initialization (which is third CPU -
>Two Xeons are recognized as four processors, it is normal). I stopped this
>kernel in debugger and got some messages from MP table parsing procedure
>which were not included in "dmesg" output:

Increase the buffer in kernel/printk.c

>3. The things are going wrong during the test phase (i.e. after the "testing
>the IO APIC....................." is printed). IO APIC #2 register #00 reads
>02008000, which is wrong according to the chipset specification - should be
>02000000. That is the reason I got the warning "unexpected IO-APIC, please
>mail to linux-smp@vger.kernel.org". Let's said that the platform I using is
>pretty new and some hardware errors may happen, so I am less worry about
>this particular message. The most strange thing is the readings from the
>rest of IO APICs. The IO APIC #3 reads physical ID 4, #4 also 4, both # 5
>and #8 has 08000000 in their register #00. How it can be?

It's possible that the mptable is wrong. Windows uses ACPI to find
the IO-APIC, so the mptable is often not well tested. It may help
to change the MP support in the BIOS setup from 1.4 to 1.1.

> 4. When I tried to understand the source code, I found that all the IO APIC
> operations are done trough the fixed memory addresses (io_apic_read() and
> io_apic_write() in io_apic.h). I am sure, I do not understand the boot
> process enough for asking my questions, but probably someone from Linux
> community will help me to solve this problem. Why the fixed addresses are
> used? Shouldn't we use the base address provided by BIOS in MP table for
> each IO APIC?

The MP table contains physical addresses. Linux kernel uses virtual
addresses. The physical addresses are mapped to the fixed virtual
addresses in init_apic_mappings().

-Andi
-
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/