KVM: VMX: Reduce redundant call and simplify code

Message ID 20230331071929.102070-1-haiwenyao@uniontech.com
State New
Headers
Series KVM: VMX: Reduce redundant call and simplify code |

Commit Message

Wenyao Hai March 31, 2023, 7:19 a.m. UTC
  Use vcpu->arch.pat = data instead of kvm_set_msr_common() to
simplify code, avoid redundant judgements.

Signed-off-by: Wenyao Hai <haiwenyao@uniontech.com>
---
 arch/x86/kvm/vmx/vmx.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
  

Comments

Sean Christopherson March 31, 2023, 3:32 p.m. UTC | #1
Nit, the call into common code is unnecessary/superfluous, not redundant.

On Fri, Mar 31, 2023, Wenyao Hai wrote:
> Use vcpu->arch.pat = data instead of kvm_set_msr_common() to
> simplify code, avoid redundant judgements.
> 
> Signed-off-by: Wenyao Hai <haiwenyao@uniontech.com>
> ---
>  arch/x86/kvm/vmx/vmx.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
> index d2d6e1b6c788..abeeea21c8ef 100644
> --- a/arch/x86/kvm/vmx/vmx.c
> +++ b/arch/x86/kvm/vmx/vmx.c
> @@ -2320,12 +2320,10 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
>  		    get_vmcs12(vcpu)->vm_exit_controls & VM_EXIT_SAVE_IA32_PAT)
>  			get_vmcs12(vcpu)->guest_ia32_pat = data;
>  
> -		if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) {
> +		if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT)
>  			vmcs_write64(GUEST_IA32_PAT, data);
> -			vcpu->arch.pat = data;
> -			break;
> -		}
> -		ret = kvm_set_msr_common(vcpu, msr_info);
> +
> +		vcpu->arch.pat = data;

After this, I'm pretty sure the PAT path in kvm_set_msr_common() is no longer used.
And good riddance, because it's not an MTRR, and then only reason to lump it in
with MTRRs would be to zap SPTEs when the memtype changes, but KVM doesn't even
do that because update_mtrr() bails early for PAT.

I'll send a small series next week to clean up handling of PAT and the related
code in kvm_set_msr_common().  I'll include this patch and the patch from Ke Guo[*]
as the first two patches in the series.

[*] https://lore.kernel.org/all/20230329081859.2571698-1-guoke@uniontech.com
  

Patch

diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index d2d6e1b6c788..abeeea21c8ef 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -2320,12 +2320,10 @@  static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 		    get_vmcs12(vcpu)->vm_exit_controls & VM_EXIT_SAVE_IA32_PAT)
 			get_vmcs12(vcpu)->guest_ia32_pat = data;
 
-		if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) {
+		if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT)
 			vmcs_write64(GUEST_IA32_PAT, data);
-			vcpu->arch.pat = data;
-			break;
-		}
-		ret = kvm_set_msr_common(vcpu, msr_info);
+
+		vcpu->arch.pat = data;
 		break;
 	case MSR_IA32_MCG_EXT_CTL:
 		if ((!msr_info->host_initiated &&