• Reiji Watanabe's avatar
    KVM: arm64: PMU: Restore the guest's EL0 event counting after migration · f9ea835e
    Reiji Watanabe authored
    Currently, with VHE, KVM enables the EL0 event counting for the
    guest on vcpu_load() or KVM enables it as a part of the PMU
    register emulation process, when needed.  However, in the migration
    case (with VHE), the same handling is lacking, as vPMU register
    values that were restored by userspace haven't been propagated yet
    (the PMU events haven't been created) at the vcpu load-time on the
    first KVM_RUN (kvm_vcpu_pmu_restore_guest() called from vcpu_load()
    on the first KVM_RUN won't do anything as events_{guest,host} of
    kvm_pmu_events are still zero).
    
    So, with VHE, enable the guest's EL0 event counting on the first
    KVM_RUN (after the migration) when needed.  More specifically,
    have kvm_pmu_handle_pmcr() call kvm_vcpu_pmu_restore_guest()
    so that kvm_pmu_handle_pmcr() on the first KVM_RUN can take
    care of it.
    
    Fixes: d0c94c49 ("KVM: arm64: Restore PMU configuration on first run")
    Cc: stable@vger.kernel.org
    Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
    Signed-off-by: default avatarReiji Watanabe <reijiw@google.com>
    Link: https://lore.kernel.org/r/20230329023944.2488484-1-reijiw@google.comSigned-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
    f9ea835e
sys_regs.c 89.7 KB