diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2019-06-20 12:24:18 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2019-06-20 12:24:18 -0400 |
commit | b21e31b253048b7f9768ca7cc270e67765fd6ba2 (patch) | |
tree | 589a0c7f79d7f30db3000f1486f1f222fa5ba60e /virt | |
parent | 9fd588772636bcbe48669d880efa2e1cc0575ebd (diff) | |
parent | e4e5a865e9a9e8e47ac1959b629e9f3ae3b062f2 (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.c | 5 | ||||
-rw-r--r-- | virt/kvm/arm/vgic/vgic-its.c | 1 |
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 */ | ||
324 | static void timer_emulate(struct arch_timer_context *ctx) | 325 | static 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 | ||
1739 | static int vgic_its_has_attr_regs(struct kvm_device *dev, | 1740 | static int vgic_its_has_attr_regs(struct kvm_device *dev, |