mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
KVM: x86: Clear pv_unhalted on all transitions to KVM_MP_STATE_RUNNABLE
In kvm_set_mp_state(), ensure that vcpu->arch.pv.pv_unhalted is always cleared on a transition to KVM_MP_STATE_RUNNABLE, so that the next HLT instruction will be respected. Fixes:6aef266c6e("kvm hypervisor : Add a hypercall to KVM hypervisor to support pv-ticketlocks") Fixes:b6b8a1451f("KVM: nVMX: Rework interception of IRQs and NMIs") Fixes:38c0b192bd("KVM: SVM: leave halted state on vmexit") Fixes:1a65105a5a("KVM: x86/xen: handle PV spinlocks slowpath") Signed-off-by: Jim Mattson <jmattson@google.com> Link: https://lore.kernel.org/r/20250113200150.487409-3-jmattson@google.com [sean: add Xen PV spinlocks to the list of Fixes, tweak changelog] Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
c9e5f3fa90
commit
e9cb61055f
|
|
@ -3883,7 +3883,6 @@ static int __sev_snp_update_protected_guest_state(struct kvm_vcpu *vcpu)
|
|||
svm->vmcb->control.vmsa_pa = pfn_to_hpa(pfn);
|
||||
|
||||
/* Mark the vCPU as runnable */
|
||||
vcpu->arch.pv.pv_unhalted = false;
|
||||
kvm_set_mp_state(vcpu, KVM_MP_STATE_RUNNABLE);
|
||||
|
||||
svm->sev_es.snp_vmsa_gpa = INVALID_PAGE;
|
||||
|
|
|
|||
|
|
@ -11215,7 +11215,6 @@ static inline int vcpu_block(struct kvm_vcpu *vcpu)
|
|||
switch(vcpu->arch.mp_state) {
|
||||
case KVM_MP_STATE_HALTED:
|
||||
case KVM_MP_STATE_AP_RESET_HOLD:
|
||||
vcpu->arch.pv.pv_unhalted = false;
|
||||
kvm_set_mp_state(vcpu, KVM_MP_STATE_RUNNABLE);
|
||||
fallthrough;
|
||||
case KVM_MP_STATE_RUNNABLE:
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ static inline bool kvm_vcpu_has_run(struct kvm_vcpu *vcpu)
|
|||
static inline void kvm_set_mp_state(struct kvm_vcpu *vcpu, int mp_state)
|
||||
{
|
||||
vcpu->arch.mp_state = mp_state;
|
||||
if (mp_state == KVM_MP_STATE_RUNNABLE)
|
||||
vcpu->arch.pv.pv_unhalted = false;
|
||||
}
|
||||
|
||||
static inline bool kvm_is_exception_pending(struct kvm_vcpu *vcpu)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user