Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-22 Thread Haiwei Li
On Tue, Sep 22, 2020 at 10:56 PM Paolo Bonzini  wrote:
>
> On 22/09/20 16:54, Haiwei Li wrote:
> >> EXIT_FASTPATH_REENTER_GUEST handling up to vcpu_enter_guest)...
> > Hi, Paolo
> >
> > I have sent a patch to do this,
> >
> > https://lore.kernel.org/kvm/20200915113033.61817-1-lihaiwei.ker...@gmail.com/
>
> Cool, thanks.  I think I'll just squash it in Wanpeng's if you don't mind.

It's all ok. I don't mind. Thanks.

Haiwei


Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-22 Thread Paolo Bonzini
On 22/09/20 16:54, Haiwei Li wrote:
>> EXIT_FASTPATH_REENTER_GUEST handling up to vcpu_enter_guest)...
> Hi, Paolo
> 
> I have sent a patch to do this,
> 
> https://lore.kernel.org/kvm/20200915113033.61817-1-lihaiwei.ker...@gmail.com/

Cool, thanks.  I think I'll just squash it in Wanpeng's if you don't mind.

Paolo



Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-22 Thread Haiwei Li
On 20/9/22 21:43, Paolo Bonzini wrote:
> On 14/09/20 22:43, Krish Sadhukhan wrote:
>>>
>>
>> Not related to your changes, but should we get rid of the variable
>> 'exit_fastpath' and just do,
>>
>>  return svm_exit_handler_fastpath(vcpu);
>>
>> It seems the variable isn't used anywhere else and svm_vcpu_run()
>> doesn't return from anywhere else either.
>
> Yes (also because vmx will do the same once we can push
> EXIT_FASTPATH_REENTER_GUEST handling up to vcpu_enter_guest)...

Hi, Paolo

I have sent a patch to do this,

https://lore.kernel.org/kvm/20200915113033.61817-1-lihaiwei.ker...@gmail.com/

Thanks.

 Haiwei


Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-22 Thread Paolo Bonzini
On 14/09/20 22:43, Krish Sadhukhan wrote:
>>
> 
> Not related to your changes, but should we get rid of the variable
> 'exit_fastpath' and just do,
> 
>         return svm_exit_handler_fastpath(vcpu);
> 
> It seems the variable isn't used anywhere else and svm_vcpu_run()
> doesn't return from anywhere else either.

Yes (also because vmx will do the same once we can push
EXIT_FASTPATH_REENTER_GUEST handling up to vcpu_enter_guest)...

> Also, svm_exit_handlers_fastpath() doesn't have any other caller. 
> Should we get rid of it as well ?

... and no, because svm_vcpu_run is a very large function and therefore
it's better to keep its flow streamlined.

Paolo



Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-15 Thread Haiwei Li




On 20/9/15 04:43, Krish Sadhukhan wrote:


On 9/13/20 11:55 PM, Wanpeng Li wrote:

From: Wanpeng Li 

Analyze is_guest_mode() in svm_vcpu_run() instead of 
svm_exit_handlers_fastpath()

in conformity with VMX version.

Suggested-by: Vitaly Kuznetsov 
Signed-off-by: Wanpeng Li 
---
  arch/x86/kvm/svm/svm.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 3da5b2f..009035a 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3393,8 +3393,7 @@ static void svm_cancel_injection(struct kvm_vcpu 
*vcpu)

  static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu)
  {
-    if (!is_guest_mode(vcpu) &&
-    to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
+    if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
  to_svm(vcpu)->vmcb->control.exit_info_1)
  return handle_fastpath_set_msr_irqoff(vcpu);
@@ -3580,6 +3579,10 @@ static __no_kcsan fastpath_t 
svm_vcpu_run(struct kvm_vcpu *vcpu)

  svm_handle_mce(svm);
  svm_complete_interrupts(svm);
+
+    if (is_guest_mode(vcpu))
+    return EXIT_FASTPATH_NONE;
+
  exit_fastpath = svm_exit_handlers_fastpath(vcpu);
  return exit_fastpath;


Not related to your changes, but should we get rid of the variable 
'exit_fastpath' and just do,


         return svm_exit_handler_fastpath(vcpu);

It seems the variable isn't used anywhere else and svm_vcpu_run() 
doesn't return from anywhere else either.


Also, svm_exit_handlers_fastpath() doesn't have any other caller. Should 
we get rid of it as well ?


I will do this soon, thanks.


Re: [PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-14 Thread Krish Sadhukhan



On 9/13/20 11:55 PM, Wanpeng Li wrote:

From: Wanpeng Li 

Analyze is_guest_mode() in svm_vcpu_run() instead of 
svm_exit_handlers_fastpath()
in conformity with VMX version.

Suggested-by: Vitaly Kuznetsov 
Signed-off-by: Wanpeng Li 
---
  arch/x86/kvm/svm/svm.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 3da5b2f..009035a 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3393,8 +3393,7 @@ static void svm_cancel_injection(struct kvm_vcpu *vcpu)
  
  static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu)

  {
-   if (!is_guest_mode(vcpu) &&
-   to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
+   if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
to_svm(vcpu)->vmcb->control.exit_info_1)
return handle_fastpath_set_msr_irqoff(vcpu);
  
@@ -3580,6 +3579,10 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)

svm_handle_mce(svm);
  
  	svm_complete_interrupts(svm);

+
+   if (is_guest_mode(vcpu))
+   return EXIT_FASTPATH_NONE;
+
exit_fastpath = svm_exit_handlers_fastpath(vcpu);
return exit_fastpath;


Not related to your changes, but should we get rid of the variable 
'exit_fastpath' and just do,


        return svm_exit_handler_fastpath(vcpu);

It seems the variable isn't used anywhere else and svm_vcpu_run() 
doesn't return from anywhere else either.


Also, svm_exit_handlers_fastpath() doesn't have any other caller.  
Should we get rid of it as well ?



For your changes,

    Reviewed-by: Krish Sadhukhan 


  }


[PATCH] KVM: SVM: Analyze is_guest_mode() in svm_vcpu_run()

2020-09-14 Thread Wanpeng Li
From: Wanpeng Li 

Analyze is_guest_mode() in svm_vcpu_run() instead of 
svm_exit_handlers_fastpath()
in conformity with VMX version.

Suggested-by: Vitaly Kuznetsov 
Signed-off-by: Wanpeng Li 
---
 arch/x86/kvm/svm/svm.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 3da5b2f..009035a 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3393,8 +3393,7 @@ static void svm_cancel_injection(struct kvm_vcpu *vcpu)
 
 static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu)
 {
-   if (!is_guest_mode(vcpu) &&
-   to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
+   if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_MSR &&
to_svm(vcpu)->vmcb->control.exit_info_1)
return handle_fastpath_set_msr_irqoff(vcpu);
 
@@ -3580,6 +3579,10 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct 
kvm_vcpu *vcpu)
svm_handle_mce(svm);
 
svm_complete_interrupts(svm);
+
+   if (is_guest_mode(vcpu))
+   return EXIT_FASTPATH_NONE;
+
exit_fastpath = svm_exit_handlers_fastpath(vcpu);
return exit_fastpath;
 }
-- 
2.7.4