• Christoffer Dall's avatar
    KVM: arm/arm64: arch_timer: Simplify kvm_timer_vcpu_terminate · 6e14ef1d
    Christoffer Dall authored
    kvm_timer_vcpu_terminate can only be called in two scenarios:
    
     1. As part of cleanup during a failed VCPU create
     2. As part of freeing the whole VM (struct kvm refcount == 0)
    
    In the first case, we cannot have programmed any timers or mapped any
    IRQs, and therefore we do not have to cancel anything or unmap anything.
    
    In the second case, the VCPU will have gone through kvm_timer_vcpu_put,
    which will have canceled the emulated physical timer's hrtimer, and we
    do not need to that here as well.  We also do not care if the irq is
    recorded as mapped or not in the VGIC data structure, because the whole
    VM is going away.  That leaves us only with having to ensure that we
    cancel the bg_timer if we were blocking the last time we called
    kvm_timer_vcpu_put().
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@arm.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    6e14ef1d
arch_timer.c 24.7 KB