RE: 256 apic id for amd64

From: YhLu
Date: Thu Dec 30 2004 - 18:09:14 EST


For the 8 way dual core Opteron system.
The CPUs will use 16 APIC ID, so BIOS or LinuxBIOS will enable APIC_EXT_ID
to use 256 apic id. So the ioapic will begin from 16.....

Another case : one system has two much 8131 will need to enable it.
For example four way system with single core Opteron, will have 7 8131s and
1 8111. So apic num will be 4+7*2+1=19.

Thanks.

YH

-----Original Message-----
From: Andi Kleen [mailto:ak@xxxxxx]
Sent: Thursday, December 30, 2004 10:45 AM
To: YhLu
Cc: linux-kernel@xxxxxxxxxxxxxxx; discuss@xxxxxxxxxx; Matt_Domsch@xxxxxxxx
Subject: Re: 256 apic id for amd64

YhLu <YhLu@xxxxxxxx> writes:

> Can someone who maintains the x86-64 io_apic.c look at my patch about 256
> apic id for amd64?

First in general if you want patches submitted look up the maintainer
in the MAINTAINERS file in the source tree and send it directly
to the appropiate person and mailing list.

Just curious - how many IO-APICs does your system have?

Then I don't like your patch very much, since it doesnt handle
Intel systems. The best fix is probably to

i386 also has a different (but Intel specific fix) - uses either
0xf or 0xff based on the APIC version. Just dropping it seems
better to me though. I suppose Matt (cc'ed) who apparently
wrote this code originally used it to work around some BIOS
bug, and at least we can hope for now that there are no
EM64T boxes with that particular BIOS bug.

I will add this patch.

-Andi

Remove check that limited max number of IO-APIC to 8.

The original check was apparently to work around some old BIOS
bugs and we just assume x86-64 machines don't have this class of
problems.

Signed-off-by: Andi Kleen <ak@xxxxxxx>

diff -u linux-2.6.10/arch/x86_64/kernel/io_apic.c-o
linux-2.6.10/arch/x86_64/kernel/io_apic.c
--- linux-2.6.10/arch/x86_64/kernel/io_apic.c-o 2004-12-24
22:34:45.000000000 +0100
+++ linux-2.6.10/arch/x86_64/kernel/io_apic.c 2004-12-30
19:41:08.000000000 +0100
@@ -1160,13 +1160,6 @@

old_id = mp_ioapics[apic].mpc_apicid;

- if (mp_ioapics[apic].mpc_apicid >= 0xf) {
- apic_printk(APIC_QUIET,KERN_ERR "BIOS bug,
IO-APIC#%d ID is %d in the MPC table!...\n",
- apic, mp_ioapics[apic].mpc_apicid);
- apic_printk(APIC_QUIET,KERN_ERR "... fixing up to
%d. (tell your hw vendor)\n",
- reg_00.bits.ID);
- mp_ioapics[apic].mpc_apicid = reg_00.bits.ID;
- }

printk(KERN_INFO "Using IO-APIC %d\n",
mp_ioapics[apic].mpc_apicid);

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