diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2017-10-27 10:28:41 -0400 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2017-11-10 03:29:36 -0500 |
commit | 07b46ed116cf0893200c97db2f72e0f7839b7f91 (patch) | |
tree | 51febb2f4d0c2844c243d6b43f7ba1d6f64036ee /virt | |
parent | 1b7fe468b0ca6a4b47a447cf583455e445bf0246 (diff) |
KVM: arm/arm64: GICv4: Unmap VLPI when freeing an LPI
When freeing an LPI (on a DISCARD command, for example), we need
to unmap the VLPI down to the physical ITS level.
Acked-by: Christoffer Dall <cdall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/arm/vgic/vgic-its.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c index 590f794b7330..ad14af8a4412 100644 --- a/virt/kvm/arm/vgic/vgic-its.c +++ b/virt/kvm/arm/vgic/vgic-its.c | |||
@@ -631,8 +631,12 @@ static void its_free_ite(struct kvm *kvm, struct its_ite *ite) | |||
631 | list_del(&ite->ite_list); | 631 | list_del(&ite->ite_list); |
632 | 632 | ||
633 | /* This put matches the get in vgic_add_lpi. */ | 633 | /* This put matches the get in vgic_add_lpi. */ |
634 | if (ite->irq) | 634 | if (ite->irq) { |
635 | if (ite->irq->hw) | ||
636 | WARN_ON(its_unmap_vlpi(ite->irq->host_irq)); | ||
637 | |||
635 | vgic_put_irq(kvm, ite->irq); | 638 | vgic_put_irq(kvm, ite->irq); |
639 | } | ||
636 | 640 | ||
637 | kfree(ite); | 641 | kfree(ite); |
638 | } | 642 | } |