mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
KVM: nSVM: Move vmcb_ctrl_area_cached.bus_lock_rip to svm_nested_state
Move "bus_lock_rip" from "vmcb_ctrl_area_cached" to "svm_nested_state" as "last_bus_lock_rip" to more accurately reflect what it tracks, and because it is NOT a cached vmcb12 control field. The misplaced field isn't all that apparent in the current code base, as KVM uses "svm->nested.ctl" broadly, but the bad placement becomes glaringly obvious if "svm->nested.ctl" is captured as a local "vmcb12_ctrl" variable. No functional change intended. Reviewed-by: Yosry Ahmed <yosry.ahmed@linux.dev> Link: https://patch.msgid.link/20260218230958.2877682-8-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
ef09eebc57
commit
af75470944
|
|
@ -850,7 +850,7 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm)
|
|||
* L1 re-enters L2, the same instruction will trigger a VM-Exit and the
|
||||
* entire cycle start over.
|
||||
*/
|
||||
if (vmcb02->save.rip && (svm->nested.ctl.bus_lock_rip == vmcb02->save.rip))
|
||||
if (vmcb02->save.rip && (svm->nested.last_bus_lock_rip == vmcb02->save.rip))
|
||||
vmcb02->control.bus_lock_counter = 1;
|
||||
else
|
||||
vmcb02->control.bus_lock_counter = 0;
|
||||
|
|
@ -1255,11 +1255,11 @@ void nested_svm_vmexit(struct vcpu_svm *svm)
|
|||
}
|
||||
|
||||
/*
|
||||
* Invalidate bus_lock_rip unless KVM is still waiting for the guest
|
||||
* to make forward progress before re-enabling bus lock detection.
|
||||
* Invalidate last_bus_lock_rip unless KVM is still waiting for the
|
||||
* guest to make forward progress before re-enabling bus lock detection.
|
||||
*/
|
||||
if (!vmcb02->control.bus_lock_counter)
|
||||
svm->nested.ctl.bus_lock_rip = INVALID_GPA;
|
||||
svm->nested.last_bus_lock_rip = INVALID_GPA;
|
||||
|
||||
nested_svm_copy_common_state(svm->nested.vmcb02.ptr, svm->vmcb01.ptr);
|
||||
|
||||
|
|
|
|||
|
|
@ -3271,7 +3271,7 @@ static int bus_lock_exit(struct kvm_vcpu *vcpu)
|
|||
vcpu->arch.complete_userspace_io = complete_userspace_buslock;
|
||||
|
||||
if (is_guest_mode(vcpu))
|
||||
svm->nested.ctl.bus_lock_rip = vcpu->arch.cui_linear_rip;
|
||||
svm->nested.last_bus_lock_rip = vcpu->arch.cui_linear_rip;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,7 +174,6 @@ struct vmcb_ctrl_area_cached {
|
|||
u64 nested_cr3;
|
||||
u64 virt_ext;
|
||||
u32 clean;
|
||||
u64 bus_lock_rip;
|
||||
union {
|
||||
#if IS_ENABLED(CONFIG_HYPERV) || IS_ENABLED(CONFIG_KVM_HYPERV)
|
||||
struct hv_vmcb_enlightenments hv_enlightenments;
|
||||
|
|
@ -189,6 +188,7 @@ struct svm_nested_state {
|
|||
u64 vm_cr_msr;
|
||||
u64 vmcb12_gpa;
|
||||
u64 last_vmcb12_gpa;
|
||||
u64 last_bus_lock_rip;
|
||||
|
||||
/*
|
||||
* The MSR permissions map used for vmcb02, which is the merge result
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user