All of lore.kernel.org
 help / color / mirror / Atom feed
* UP local APIC is deadly on SMP Athlon
@ 2003-02-20 15:05 Ion Badulescu
  2003-02-21  0:12 ` Jeff Garzik
  0 siblings, 1 reply; 13+ messages in thread
From: Ion Badulescu @ 2003-02-20 15:05 UTC (permalink / raw)
  To: linux-kernel

A UP kernel compiled with CONFIG_X86_LOCAL_APIC=y dies a very horrible
death on an SMP Athlon motherboard (Tyan S2462 and S2468), flooding the
console with the following messages:

...
masked ExtINT on CPU#0
ESR value before enabling vector: 00000008
ESR value afteC error on CPU8(08)
<6>APIC <6>APIC error PU0: 08(08)
<6C error on CP08(08)
<6>APICor on CPU0: 08
<6>APIC erro CPU0: 08(08)
PIC error on0: 08(08)
<6>Aerror on CPU0:08)
<6>APIC e on CPU0: 08(06>APIC error oU0: 08(08)
<6C error on CPU8(08)
...

[this is a serial console, and the errors are produced faster than the 
console can print them]

The kernel is 2.4.21-pre4, but any recent 2.4/2.5 kernels produce the same 
results: 2.4.20, 2.5.62, and Red Hat's 2.4.18-{18.24}. It's not a 
machine-specific problem, because it shows up on at least 5 different 
machines (all of them dual Athlon, using Tyan MB's). The error message is 
always "APIC error on CPU0: 08(08)".

A bit of binary searching between kernel versions shows that the problem 
was introduced in 2.4.10-pre12.

The IO-APIC option (CONFIG_X86_UP_IOAPIC) does not matter, only the local 
APIC option does. The kernel is compiled for an Athlon (CONFIG_MK7=y and 
everything that implies).

Ideas?

Thanks,
Ion

-- 
  It is better to keep your mouth shut and be thought a fool,
            than to open it and remove all doubt.






^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: UP local APIC is deadly on SMP Athlon
@ 2003-02-22  0:38 Mikael Pettersson
  2003-02-22  8:05 ` Ion Badulescu
  0 siblings, 1 reply; 13+ messages in thread
From: Mikael Pettersson @ 2003-02-22  0:38 UTC (permalink / raw)
  To: ionut, m.c.p; +Cc: jgarzik, linux-kernel

On Fri, 21 Feb 2003 22:41:23 +0100, Marc-Christian Petersen wrote:
>> And this is what I found: eliminating two lines from
>> APIC_init_uniprocessor() makes the problem go away.
>> diff -urNX diff_kernel_excludes linux-2.4.10-pre12/arch/i386/kernel/apic.c
>> linux-2.4.10-pre11++/arch/i386/kernel/apic.c ---
>> linux-2.4.10-pre12/arch/i386/kernel/apic.c	Wed Feb 19 23:53:15 2003 +++
>> linux-2.4.10-pre11++/arch/i386/kernel/apic.c	Fri Feb 21 15:37:06 2003 @@
>> -1087,9 +1087,6 @@
>>
>>  	connect_bsp_APIC();
>>
>> -	phys_cpu_present_map = 1;
>> -	apic_write_around(APIC_ID, boot_cpu_id);
>> -
>>  	apic_pm_init2();
>>
>>  	setup_local_APIC();
>>
>> [patch against 2.4.10-pre12, but 2.4.21-pre4 is reasonably similar]
>Don't do this. I am pretty sure it will break all Intels. I still cannot 
>understand why this fixes your AMD Athlon problem.

This is interesting. Very interesting, even. A plain UP_APIC kernel
(with IO_APIC not enabled or not detected) shouldn't need to touch
APIC_ID at all. I strongly suspect this is a remnant of apic.c's old
SMP-only history, and that it should be removed for UP_APIC-only.

I need to get some downtime (zzz...) but I'll look into this ASAP.

/Mikael

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2003-02-22  9:23 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-02-20 15:05 UP local APIC is deadly on SMP Athlon Ion Badulescu
2003-02-21  0:12 ` Jeff Garzik
2003-02-21  2:03   ` Ion Badulescu
2003-02-21 14:47     ` Mikael Pettersson
2003-02-21 15:09       ` Ion Badulescu
2003-02-21 15:41         ` Mikael Pettersson
2003-02-21 20:42         ` Ion Badulescu
2003-02-21 21:41           ` Marc-Christian Petersen
2003-02-21 21:49             ` Ion Badulescu
  -- strict thread matches above, loose matches on Subject: below --
2003-02-22  0:38 Mikael Pettersson
2003-02-22  8:05 ` Ion Badulescu
2003-02-22  9:06   ` Willy Tarreau
2003-02-22  9:19     ` Willy Tarreau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.