diff options
author | Rong Chang <rongchang@chromium.org> | 2019-01-15 16:09:53 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-02-27 04:59:23 -0800 |
commit | a3c27b39fa69f280a3728a5cf24de57a5d3ccb0d (patch) | |
tree | bf9202f135b1f9d464113ee98a7e509478504df1 /board/hatch/board.c | |
parent | f8a6420fb6181c50301cab7a133524424a06481d (diff) | |
download | chrome-ec-a3c27b39fa69f280a3728a5cf24de57a5d3ccb0d.tar.gz |
ish: fix LAPIC error by sending EOI to IOAPIC RTE
ISH APIC has a bug when sending multiple IOAPIC interrupts to LAPIC
at the same time, there's a small chance that the IRR (interrupt
request register) states are not sync between LAPIC and IOAPIC REDTBL
(redirection table). LAPIC raises internal error with error code
'receive illegal vector' in ESR.
This CL handles above LAPIC local vector table error condition by
comparing LAPIC IRR bits with IOAPIC REDTBL entries. And sends EOI
(end of interrupt) to IOAPIC RTE if corresponding vector in LAPIC
IRR was not set.
BRANCH=none
BUG=b:112750896,b:124128140
TEST=manual
Cherry pick stress test program CL:1372875 and load on Atlas.
Place a touch tester on TP and connect to ground.
Chech console LAPIC error count and IOAPIC pending count.
Change-Id: I1cddc91b2eca35719a83415f1548379574219a58
Signed-off-by: Rong Chang <rongchang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1411953
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'board/hatch/board.c')
0 files changed, 0 insertions, 0 deletions