]> git.proxmox.com Git - mirror_qemu.git/commit
hw/intc/arm_gicv3: Don't signal Pending+Active interrupts to CPU
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 27 Dec 2016 14:59:25 +0000 (14:59 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 27 Dec 2016 14:59:25 +0000 (14:59 +0000)
commit0bfa02595aa2b887d1e7f56600a5aec7067c71b0
tree3038bcdc51e24822a225267c2070b2e9cba43de3
parente971fa042253ed36e602a2c1bc01144da3e8832f
hw/intc/arm_gicv3: Don't signal Pending+Active interrupts to CPU

The GICv3 requires that we only signal Pending interrupts to
the CPU. This category does not include Pending+Active interrupts,
which means we need to check whether the interrupt is Active in
the gicr_int_pending() and gicd_int_pending() functions.

Interrupts are rarely in the Active+Pending state, but KVM
uses this as part of its handling of the virtual timer, so
this bug was causing KVM to go into an infinite loop of
taking the vtimer interrupt when the guest first triggered it.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
hw/intc/arm_gicv3.c