arm/arm64: KVM: vgic: Move active state handling to flush_hwstate
authorChristoffer Dall <christoffer.dall@linaro.org>
Fri, 4 Sep 2015 14:24:38 +0000 (16:24 +0200)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 4 Sep 2015 15:26:52 +0000 (16:26 +0100)
commit04bdfa8ab5bab929cc57f73952c503a88372601d
tree3330f4c43a6d3a274186f729489b4aea5fa71621
parent054167b3d55127feb64978eddf3f9f3a84fe493b
arm/arm64: KVM: vgic: Move active state handling to flush_hwstate

We currently set the physical active state only when we *inject* a new
pending virtual interrupt, but this is actually not correct, because we
could have been preempted and run something else on the system that
resets the active state to clear.  This causes us to run the VM with the
timer set to fire, but without setting the physical active state.

The solution is to always check the LR configurations, and we if have a
mapped interrupt in the LR in either the pending or active state
(virtual), then set the physical active state.

Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
virt/kvm/arm/vgic.c