quark_se: apic: work around EOI forwarding issue
Quark SE Lakemont core has a hardware bug where the LOAPIC does not properly notify the IOAPIC to clear the IRR bit for level- triggered interrupts. This patch introduces a workaround where the vector ID of the in-service interrupt is manually written to the IOAPIC_EOI register, resulting in the bit being cleared. Unfortunately, in the context where EOI happens it's very difficult to identify which IRQ line is being serviced, so this is done unconditionally for all interrupts vectors whether they are registered in the IOAPIC RTE table or not. Change-Id: I639cd258dec4f50934e17eadbb821e6a7112e636 Signed-off-by: Andrew Boie <andrew.p.boie@intel.com> Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
parent
9e9922265e
commit
88808f1247
6 changed files with 124 additions and 39 deletions
|
@ -41,6 +41,13 @@ config IOAPIC_NUM_RTES
|
|||
config LOAPIC_TIMER_IRQ
|
||||
default 64
|
||||
|
||||
config EOI_FORWARDING_BUG
|
||||
bool
|
||||
default y
|
||||
help
|
||||
Quark SE LOAPIC has issues with forwarding EOI to the IOAPIC for level
|
||||
triggered interrupts, this is a SW workaround.
|
||||
|
||||
if PINMUX
|
||||
config PINMUX_BASE
|
||||
default 0xB0800930
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue