aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2019-06-20 12:24:18 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2019-06-20 12:24:18 -0400
commitb21e31b253048b7f9768ca7cc270e67765fd6ba2 (patch)
tree589a0c7f79d7f30db3000f1486f1f222fa5ba60e /virt
parent9fd588772636bcbe48669d880efa2e1cc0575ebd (diff)
parente4e5a865e9a9e8e47ac1959b629e9f3ae3b062f2 (diff)
Merge tag 'kvmarm-fixes-for-5.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
KVM/arm fixes for 5.2, take #2 - SVE cleanup killing a warning with ancient GCC versions - Don't report non-existent system registers to userspace - Fix memory leak when freeing the vgic ITS - Properly lower the interrupt on the emulated physical timer
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/arm/arch_timer.c5
-rw-r--r--virt/kvm/arm/vgic/vgic-its.c1
2 files changed, 4 insertions, 2 deletions
diff --git a/virt/kvm/arm/arch_timer.c b/virt/kvm/arm/arch_timer.c
index 7fc272ecae16..1b1c449ceaf4 100644
--- a/virt/kvm/arm/arch_timer.c
+++ b/virt/kvm/arm/arch_timer.c
@@ -321,14 +321,15 @@ static void kvm_timer_update_irq(struct kvm_vcpu *vcpu, bool new_level,
321 } 321 }
322} 322}
323 323
324/* Only called for a fully emulated timer */
324static void timer_emulate(struct arch_timer_context *ctx) 325static void timer_emulate(struct arch_timer_context *ctx)
325{ 326{
326 bool should_fire = kvm_timer_should_fire(ctx); 327 bool should_fire = kvm_timer_should_fire(ctx);
327 328
328 trace_kvm_timer_emulate(ctx, should_fire); 329 trace_kvm_timer_emulate(ctx, should_fire);
329 330
330 if (should_fire) { 331 if (should_fire != ctx->irq.level) {
331 kvm_timer_update_irq(ctx->vcpu, true, ctx); 332 kvm_timer_update_irq(ctx->vcpu, should_fire, ctx);
332 return; 333 return;
333 } 334 }
334 335
diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
index 44ceaccb18cf..8c9fe831bce4 100644
--- a/virt/kvm/arm/vgic/vgic-its.c
+++ b/virt/kvm/arm/vgic/vgic-its.c
@@ -1734,6 +1734,7 @@ static void vgic_its_destroy(struct kvm_device *kvm_dev)
1734 1734
1735 mutex_unlock(&its->its_lock); 1735 mutex_unlock(&its->its_lock);
1736 kfree(its); 1736 kfree(its);
1737 kfree(kvm_dev);/* alloc by kvm_ioctl_create_device, free by .destroy */
1737} 1738}
1738 1739
1739static int vgic_its_has_attr_regs(struct kvm_device *dev, 1740static int vgic_its_has_attr_regs(struct kvm_device *dev,