2018-01-01 22:58:21

by Paolo Bonzini

[permalink] [raw]
Subject: [PATCH] KVM: nVMX: remove unnecessary vmwrite from L2->L1 vmexit

The POSTED_INTR_NV field is constant (though it differs between the vmcs01 and
vmcs02), there is no need to reload it on vmexit to L1.

Signed-off-by: Paolo Bonzini <[email protected]>
---
arch/x86/kvm/vmx.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index e6223fe8faa1..1e184830a295 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -11610,9 +11610,6 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
*/
vmx_flush_tlb(vcpu, true);
}
- /* Restore posted intr vector. */
- if (nested_cpu_has_posted_intr(vmcs12))
- vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);

vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
--
1.8.3.1


2018-01-02 00:45:28

by Jim Mattson

[permalink] [raw]
Subject: Re: [PATCH] KVM: nVMX: remove unnecessary vmwrite from L2->L1 vmexit

Reviewed-by: Jim Mattson <[email protected]>

On Mon, Jan 1, 2018 at 2:58 PM, Paolo Bonzini <[email protected]> wrote:
> The POSTED_INTR_NV field is constant (though it differs between the vmcs01 and
> vmcs02), there is no need to reload it on vmexit to L1.
>
> Signed-off-by: Paolo Bonzini <[email protected]>
> ---
> arch/x86/kvm/vmx.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index e6223fe8faa1..1e184830a295 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -11610,9 +11610,6 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
> */
> vmx_flush_tlb(vcpu, true);
> }
> - /* Restore posted intr vector. */
> - if (nested_cpu_has_posted_intr(vmcs12))
> - vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
>
> vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
> vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
> --
> 1.8.3.1
>

2018-01-02 09:47:20

by Liran Alon

[permalink] [raw]
Subject: Re: [PATCH] KVM: nVMX: remove unnecessary vmwrite from L2->L1 vmexit



On 02/01/18 00:58, Paolo Bonzini wrote:
> The POSTED_INTR_NV field is constant (though it differs between the vmcs01 and
> vmcs02), there is no need to reload it on vmexit to L1.
>
> Signed-off-by: Paolo Bonzini <[email protected]>
> ---
> arch/x86/kvm/vmx.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index e6223fe8faa1..1e184830a295 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -11610,9 +11610,6 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
> */
> vmx_flush_tlb(vcpu, true);
> }
> - /* Restore posted intr vector. */
> - if (nested_cpu_has_posted_intr(vmcs12))
> - vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
>
> vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
> vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
>

Reviewed-by: Liran Alon <[email protected]>

I would also add to commit message:
Fixes: 06a5524f091b ("KVM: nVMX: Fix posted intr delivery when vcpu is
in guest mode")

2018-01-03 06:32:38

by Quan Xu

[permalink] [raw]
Subject: Re: [PATCH] KVM: nVMX: remove unnecessary vmwrite from L2->L1 vmexit



On 2018/01/02 17:47, Liran Alon wrote:
>
>
> On 02/01/18 00:58, Paolo Bonzini wrote:
>> The POSTED_INTR_NV field is constant (though it differs between the
>> vmcs01 and
>> vmcs02), there is no need to reload it on vmexit to L1.
>>
>> Signed-off-by: Paolo Bonzini <[email protected]>
>> ---
>>   arch/x86/kvm/vmx.c | 3 ---
>>   1 file changed, 3 deletions(-)
>>
>> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
>> index e6223fe8faa1..1e184830a295 100644
>> --- a/arch/x86/kvm/vmx.c
>> +++ b/arch/x86/kvm/vmx.c
>> @@ -11610,9 +11610,6 @@ static void load_vmcs12_host_state(struct
>> kvm_vcpu *vcpu,
>>            */
>>           vmx_flush_tlb(vcpu, true);
>>       }
>> -    /* Restore posted intr vector. */
>> -    if (nested_cpu_has_posted_intr(vmcs12))
>> -        vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
>>
>>       vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
>>       vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
>>
>
> Reviewed-by: Liran Alon <[email protected]>
>
> I would also add to commit message:
> Fixes: 06a5524f091b ("KVM: nVMX: Fix posted intr delivery when vcpu is
> in guest mode")
>
Reviewed-by: Quan Xu <[email protected]>