diff options
author | Radim Krčmář <rkrcmar@redhat.com> | 2016-06-02 18:28:04 +0300 |
---|---|---|
committer | Radim Krčmář <rkrcmar@redhat.com> | 2016-06-02 18:28:04 +0300 |
commit | 13e98fd1efc7f65cab1bba6cfab7859840f9aa66 (patch) | |
tree | 88be4e84a1c257e7e999d7bd344c511c66e7973e /virt/kvm/arm/vgic/vgic-v2.c | |
parent | e28e909c36bb5d6319953822d84df00fce7cbd18 (diff) | |
parent | 05fb05a6ca25e02ad8c31bc440b3c4996864f379 (diff) | |
download | linux-13e98fd1efc7f65cab1bba6cfab7859840f9aa66.tar.xz |
Merge tag 'kvm-arm-for-v4.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm
KVM/ARM Fixes for v4.7-rc2
Fixes for the vgic, 2 of the patches address a bug introduced in v4.6
while the rest are for the new vgic.
Diffstat (limited to 'virt/kvm/arm/vgic/vgic-v2.c')
-rw-r--r-- | virt/kvm/arm/vgic/vgic-v2.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/virt/kvm/arm/vgic/vgic-v2.c b/virt/kvm/arm/vgic/vgic-v2.c index 8ad42c217770..e31405ee5515 100644 --- a/virt/kvm/arm/vgic/vgic-v2.c +++ b/virt/kvm/arm/vgic/vgic-v2.c @@ -112,11 +112,15 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu) } } - /* Clear soft pending state when level IRQs have been acked */ - if (irq->config == VGIC_CONFIG_LEVEL && - !(val & GICH_LR_PENDING_BIT)) { - irq->soft_pending = false; - irq->pending = irq->line_level; + /* + * Clear soft pending state when level irqs have been acked. + * Always regenerate the pending state. + */ + if (irq->config == VGIC_CONFIG_LEVEL) { + if (!(val & GICH_LR_PENDING_BIT)) + irq->soft_pending = false; + + irq->pending = irq->line_level || irq->soft_pending; } spin_unlock(&irq->irq_lock); |