mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
2802e828fb
crosvm seems to be adding an extra mptable entry for irq0 that points to a non-existent ioapic (with apic_id=0 where the ioapic's id is not 0). The bad irq0 and valid irq0 entries are the first two listed when using apic=debug and show_lapic=all kernel params: ``` [ 0.756044] Int: type 0, pol 0, trig 0, bus 01, IRQ 00, APIC ID 0, APIC INT 00 [ 0.764474] Int: type 0, pol 0, trig 0, bus 01, IRQ 00, APIC ID 5, APIC INT 00 ``` If the bad irq0 entry exists, and if check_timer is called in io_apic.c in the kernel, it can cause an invalid opcode exception in some kernels, seemingly because it ends up calling find_irq_entry(-1, -1, 0) which does a -1 index on the static "ioapics" struct in io_apic.c. It seems like a kernel bug that such an index could happen, but this also seems like a bad entry in mptables. A similar irq entry exists in kvmtool, but it it's a local interrupt. If this entry is adjusted to match then the invalid opcode kernel panic stops. BUG=b:211912415 TEST=ran linux image, booted fine Change-Id: I125dd2458f86de65553577b8d1c4d1366d778de9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3405332 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Colin Downs-Razouk <colindr@google.com> |
||
---|---|---|
.. | ||
src | ||
.windows_build_test_skip | ||
Cargo.toml |