• Maciej W. Rozycki's avatar
    x86/apic: Reinstate error IRQ Pentium erratum 3AP workaround · 023de4a0
    Maciej W. Rozycki authored
    A change introduced with commit 60283df7
    ("x86/apic: Read Error Status Register correctly") removed a read from the
    APIC ESR register made before writing to same required to retrieve the
    correct error status on Pentium systems affected by the 3AP erratum[1]:
    
    	"3AP. Writes to Error Register Clears Register
    
    	PROBLEM: The APIC Error register is intended to only be read.
    	If there is a write to this register the data in the APIC Error
    	register will be cleared and lost.
    
    	IMPLICATION: There is a possibility of clearing the Error
    	register status since the write to the register is not
    	specifically blocked.
    
    	WORKAROUND: Writes should not occur to the Pentium processor
    	APIC Error register.
    
    	STATUS: For the steppings affected see the Summary Table of
    	Changes at the beginning of this section."
    
    The steppings affected are actually: B1, B3 and B5.
    
    To avoid this information loss this change avoids the write to
    ESR on all Pentium systems where it is actually never needed;
    in Pentium processor documentation ESR was noted read-only and
    the write only required for future architectural
    compatibility[2].
    
    The approach taken is the same as in lapic_setup_esr().
    
    References:
    
    	[1] "Pentium Processor Family Developer's Manual", Intel Corporation,
    	    1997, order number 241428-005, Appendix A "Errata and S-Specs for the
    	    Pentium Processor Family", p. A-92,
    
    	[2] "Pentium Processor Family Developer's Manual, Volume 3: Architecture
    	    and Programming Manual", Intel Corporation, 1995, order number
    	    241430-004, Section 19.3.3. "Error Handling In APIC", p. 19-33.
    Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
    Cc: Richard Weinberger <richard@nod.at>
    Link: http://lkml.kernel.org/r/alpine.LFD.2.11.1404011300010.27402@eddie.linux-mips.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    023de4a0
apic.c 63.8 KB