Re: [PATCH 45/79] [PATCH] fix apic acking of irqs
From: Glauber Costa
Date: Tue Mar 25 2008 - 09:43:51 EST
Maciej W. Rozycki wrote:
is inherited from x86_64, we call do_boot_cpu with irqs clearly enabled, and
check esr in the process.
Please note that ESR may hold some leftover state from whatever happened
before Linux has taken control, so it is reasonable and I think actually
recommended by Intel (FWIW) to clear the register before enabling the
error interrupt. For how to clear the ESR properly, please see
setup_local_APIC() -- subtle differences and errata in various APIC
implementations have made it more complicated than necessary, sigh...
which excerpt specifically are you talking about ?
the only ESR mention I see in setup_local_APIC() is this:
/* Pound the ESR really hard over the head with a big hammer -
mbligh */
if (esr_disable) {
apic_write(APIC_ESR, 0);
apic_write(APIC_ESR, 0);
apic_write(APIC_ESR, 0);
apic_write(APIC_ESR, 0);
}
which seems more like a disablement.
the bootup code does clean it, tough, by writing and reading the ESR.
But I can understand from the spec you posted that this is clearly an error.
So I'd have better come up with a new solution from this
Well, with CONFIG_X86_GOOD_APIC set there is no RMW access to the ESR as
apic_write_around() expands to apic_write(). And the option is meant to
be clear only for the original integrated APIC as included in the Pentium
processor ("Pentium-Classic" in the Kconfig nomenclature). I have no
means to test such a system, but I still have a working dual-Pentium-MMX
machine, which features local APICs that should be the same modulo errata.
I may check and see whether a RMW cycle to the ESR triggers any problems
with this computer, but the box is currently at the other end of the
continent, so it will take a while.
I have asked this question already: what kind of CPU are you running on?
Do you really need to have CONFIG_X86_GOOD_APIC clear with it?
My testings that triggered that were with qemu, with randconfigs.
Probably it has a good apic, but it is good that it triggered anyway.
Otherwise I'd never see it.
--
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/