mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 02:31:27 +02:00
KVM: x86: Drop superfluous caching of KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT
Drop kvm_vcpu_arch.apf.delivery_as_pf_vmexit and instead use msr_en_val as
the source of truth to reduce the probability of operating on stale data.
This fixes flaws where KVM fails to update delivery_as_pf_vmexit when APF
is explicitly disabled by the guest or implicitly disabled by KVM on INIT.
Absent other bugs, the flaws are benign as KVM *shouldn't* consume
delivery_as_pf_vmexit when PV APF support is disabled.
Simply delete the field, as there's zero benefit to maintaining a separate
"cache" of the state.
Fixes: 52a5c155cf ("KVM: async_pf: Let guest support delivery of async_pf from guest mode")
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Link: https://patch.msgid.link/20260406225359.1245490-3-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
923ca078f0
commit
3c0bf11dd4
|
|
@ -1058,7 +1058,6 @@ struct kvm_vcpu_arch {
|
|||
u32 id;
|
||||
u32 host_apf_flags;
|
||||
bool send_always;
|
||||
bool delivery_as_pf_vmexit;
|
||||
bool pageready_pending;
|
||||
} apf;
|
||||
|
||||
|
|
|
|||
|
|
@ -3667,7 +3667,6 @@ static int kvm_pv_enable_async_pf(struct kvm_vcpu *vcpu, u64 data)
|
|||
}
|
||||
|
||||
vcpu->arch.apf.send_always = (data & KVM_ASYNC_PF_SEND_ALWAYS);
|
||||
vcpu->arch.apf.delivery_as_pf_vmexit = data & KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT;
|
||||
|
||||
kvm_async_pf_wakeup_all(vcpu);
|
||||
|
||||
|
|
@ -14018,7 +14017,7 @@ static bool kvm_can_deliver_async_pf(struct kvm_vcpu *vcpu)
|
|||
* L1 needs to opt into the special #PF vmexits that are
|
||||
* used to deliver async page faults.
|
||||
*/
|
||||
return vcpu->arch.apf.delivery_as_pf_vmexit;
|
||||
return vcpu->arch.apf.msr_en_val & KVM_ASYNC_PF_DELIVERY_AS_PF_VMEXIT;
|
||||
} else {
|
||||
/*
|
||||
* Play it safe in case the guest temporarily disables paging.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user