qemu-patch-raspberry4/include
Vitaly Kuznetsov 958a01dab8 ioapic: allow buggy guests mishandling level-triggered interrupts to make progress
It was found that Hyper-V 2016 on KVM in some configurations (q35 machine +
piix4-usb-uhci) hangs on boot. Root-cause was that one of Hyper-V
level-triggered interrupt handler performs EOI before fixing the cause of
the interrupt. This results in IOAPIC keep re-raising the level-triggered
interrupt after EOI because irq-line remains asserted.

Gory details: https://www.spinics.net/lists/kvm/msg184484.html
(the whole thread).

Turns out we were dealing with similar issues before; in-kernel IOAPIC
implementation has commit 184564efae4d ("kvm: ioapic: conditionally delay
irq delivery duringeoi broadcast") which describes a very similar issue.

Steal the idea from the above mentioned commit for IOAPIC implementation in
QEMU. SUCCESSIVE_IRQ_MAX_COUNT, delay and the comment are borrowed as well.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-Id: <20190402080215.10747-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2019-05-17 15:19:39 +02:00
..
authz Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
block Miscellaneous patches for 2019-05-13 2019-05-13 13:55:13 +01:00
chardev Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
crypto Don't talk about the LGPL if the file is licensed under the GPL 2019-01-30 10:51:20 +01:00
disas Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
exec Clean up decorations and whitespace around header guards 2019-05-13 08:58:55 +02:00
fpu softfloat: Implement float128_to_uint32 2019-02-26 14:05:19 +00:00
hw ioapic: allow buggy guests mishandling level-triggered interrupts to make progress 2019-05-17 15:19:39 +02:00
io io: Make qio_channel_yield() interruptible 2019-02-25 15:03:19 +01:00
libdecnumber Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
migration Clean up header guards that don't match their file name 2019-05-13 08:58:55 +02:00
monitor monitor: Clean up how monitor_disas() funnels output to monitor 2019-04-18 22:18:59 +02:00
net net: Add a network device specific self-announcement ability 2019-03-05 11:27:41 +08:00
qapi qapi: remove qmp_unregister_command() 2019-02-18 14:44:05 +01:00
qemu Clean up decorations and whitespace around header guards 2019-05-13 08:58:55 +02:00
qom cpu: Rename parse_cpu_model() to parse_cpu_option() 2019-04-25 14:17:35 -03:00
scsi Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
standard-headers * cpu-exec fixes (Emilio, Laurent) 2019-02-05 19:39:22 +00:00
sysemu Miscellaneous patches for 2019-05-13 2019-05-13 13:55:13 +01:00
ui Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
elf.h elf: Add RISC-V PSABI ELF header defines 2019-03-19 05:14:39 -07:00
glib-compat.h slirp: Move g_spawn_async_with_fds_qemu compatibility to slirp/ 2019-02-07 15:49:08 +02:00
qemu-common.h include: Include fprintf-fn.h only where needed 2019-04-18 22:18:59 +02:00
qemu-io.h qemu-io: Let command functions return error code 2018-06-11 16:18:45 +02:00
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00