Re: [PATCH][2.6] local APIC LVTT init bug

From: Maciej W. Rozycki
Date: Fri Jan 23 2004 - 07:08:18 EST


On Thu, 22 Jan 2004, Mikael Pettersson wrote:

> __setup_APIC_LVTT() incorrectly sets i82489DX-only bits
> which are reserved in integrated local APICs, causing
> problems in some machines. Fixed in this patch by making
> this setting conditional.

Sigh -- why can't designers keep such a trivial backwards
compatibility??? The integrated APIC was said to be backwards compatible
when introduced and so far all implementations used to. What you write
means that has been broken -- could please say which vendor to blame?

> It's possible these bits don't need to be set on i82489DXs,
> but not having this HW for testing I elected to maintain
> our current behaviour on these old machines.

They were originally unset, leading to broken behavior. I introduced the
current settings based on i82489DX specification once the problem was
discovered. The code was checked at the run time on a few systems with
i82489DX APICs.

The timer source has to be correctly selected -- we cannot rely on the
firmware to set it the way we want it as the firmware is free to use the
timer whatever way it wants. Even the power-on/reset setting is
unsuitable as it's the CLK input, straight, and we want it predivided like
with the integrated APIC. The third alternative, the TMBASE input, cannot
be used reliably at all -- it may be simply NC on a given system.

Your proposal is therefore the only correct one.

Maciej

--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@xxxxxxxxxxxxx, PGP key available +
-
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/