Messages in this thread |  | | Date | Mon, 8 Dec 2025 17:14:56 +0800 | | Subject | Re: [PATCH v6 35/44] KVM: VMX: Drop intermediate "guest" field from msr_autostore | | From | "Mi, Dapeng" <> |
| |
On 12/6/2025 8:17 AM, Sean Christopherson wrote: > Drop the intermediate "guest" field from vcpu_vmx.msr_autostore as the > value saved on VM-Exit isn't guaranteed to be the guest's value, it's > purely whatever is in hardware at the time of VM-Exit. E.g. KVM's only > use of the store list at the momemnt is to snapshot TSC at VM-Exit, and > the value saved is always the raw TSC even if TSC-offseting and/or > TSC-scaling is enabled for the guest. > > And unlike msr_autoload, there is no need differentiate between "on-entry" > and "on-exit". > > No functional change intended. > > Cc: Jim Mattson <jmattson@google.com> > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- > arch/x86/kvm/vmx/nested.c | 10 +++++----- > arch/x86/kvm/vmx/vmx.c | 2 +- > arch/x86/kvm/vmx/vmx.h | 4 +--- > 3 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c > index 729cc1f05ac8..486789dac515 100644 > --- a/arch/x86/kvm/vmx/nested.c > +++ b/arch/x86/kvm/vmx/nested.c > @@ -1076,11 +1076,11 @@ static bool nested_vmx_get_vmexit_msr_value(struct kvm_vcpu *vcpu, > * VM-exit in L0, use the more accurate value. > */ > if (msr_index == MSR_IA32_TSC) { > - int i = vmx_find_loadstore_msr_slot(&vmx->msr_autostore.guest, > + int i = vmx_find_loadstore_msr_slot(&vmx->msr_autostore, > MSR_IA32_TSC); > > if (i >= 0) { > - u64 val = vmx->msr_autostore.guest.val[i].value; > + u64 val = vmx->msr_autostore.val[i].value; > > *data = kvm_read_l1_tsc(vcpu, val); > return true; > @@ -1167,7 +1167,7 @@ static void prepare_vmx_msr_autostore_list(struct kvm_vcpu *vcpu, > u32 msr_index) > { > struct vcpu_vmx *vmx = to_vmx(vcpu); > - struct vmx_msrs *autostore = &vmx->msr_autostore.guest; > + struct vmx_msrs *autostore = &vmx->msr_autostore; > bool in_vmcs12_store_list; > int msr_autostore_slot; > bool in_autostore_list; > @@ -2366,7 +2366,7 @@ static void prepare_vmcs02_constant_state(struct vcpu_vmx *vmx) > * addresses are constant (for vmcs02), the counts can change based > * on L2's behavior, e.g. switching to/from long mode. > */ > - vmcs_write64(VM_EXIT_MSR_STORE_ADDR, __pa(vmx->msr_autostore.guest.val)); > + vmcs_write64(VM_EXIT_MSR_STORE_ADDR, __pa(vmx->msr_autostore.val)); > vmcs_write64(VM_EXIT_MSR_LOAD_ADDR, __pa(vmx->msr_autoload.host.val)); > vmcs_write64(VM_ENTRY_MSR_LOAD_ADDR, __pa(vmx->msr_autoload.guest.val)); > > @@ -2704,7 +2704,7 @@ static void prepare_vmcs02_rare(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) > */ > prepare_vmx_msr_autostore_list(&vmx->vcpu, MSR_IA32_TSC); > > - vmcs_write32(VM_EXIT_MSR_STORE_COUNT, vmx->msr_autostore.guest.nr); > + vmcs_write32(VM_EXIT_MSR_STORE_COUNT, vmx->msr_autostore.nr); > vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, vmx->msr_autoload.host.nr); > vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, vmx->msr_autoload.guest.nr); > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 62ba2a2b9e98..23c92c41fd83 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -6567,7 +6567,7 @@ void dump_vmcs(struct kvm_vcpu *vcpu) > if (vmcs_read32(VM_ENTRY_MSR_LOAD_COUNT) > 0) > vmx_dump_msrs("guest autoload", &vmx->msr_autoload.guest); > if (vmcs_read32(VM_EXIT_MSR_STORE_COUNT) > 0) > - vmx_dump_msrs("guest autostore", &vmx->msr_autostore.guest); > + vmx_dump_msrs("autostore", &vmx->msr_autostore); > > if (vmentry_ctl & VM_ENTRY_LOAD_CET_STATE) > pr_err("S_CET = 0x%016lx, SSP = 0x%016lx, SSP TABLE = 0x%016lx\n", > diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h > index d7a96c84371f..4ce653d729ca 100644 > --- a/arch/x86/kvm/vmx/vmx.h > +++ b/arch/x86/kvm/vmx/vmx.h > @@ -245,9 +245,7 @@ struct vcpu_vmx { > struct vmx_msrs host; > } msr_autoload; > > - struct msr_autostore { > - struct vmx_msrs guest; > - } msr_autostore; > + struct vmx_msrs msr_autostore; > > struct { > int vm86_active;
LGTM.
Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
|  |