• James Morse's avatar
    KVM: arm/arm64: Handle CPU_PM_ENTER_FAILED · 58d6b15e
    James Morse authored
    cpu_pm_enter() calls the pm notifier chain with CPU_PM_ENTER, then if
    there is a failure: CPU_PM_ENTER_FAILED.
    
    When KVM receives CPU_PM_ENTER it calls cpu_hyp_reset() which will
    return us to the hyp-stub. If we subsequently get a CPU_PM_ENTER_FAILED,
    KVM does nothing, leaving the CPU running with the hyp-stub, at odds
    with kvm_arm_hardware_enabled.
    
    Add CPU_PM_ENTER_FAILED as a fallthrough for CPU_PM_EXIT, this reloads
    KVM based on kvm_arm_hardware_enabled. This is safe even if CPU_PM_ENTER
    never gets as far as KVM, as cpu_hyp_reinit() calls cpu_hyp_reset()
    to make sure the hyp-stub is loaded before reloading KVM.
    
    Fixes: 67f69197 ("arm64: kvm: allows kvm cpu hotplug")
    Cc: <stable@vger.kernel.org> # v4.7+
    CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    58d6b15e
arm.c 35 KB