All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Zhang <yang.zhang.wz@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	Xiao Guangrong <guangrong.xiao@linux.intel.com>
Subject: Re: [PATCH 1/2] KVM: x86: disable MPX if host did not enable MPX XSAVE features
Date: Wed, 13 Apr 2016 17:47:37 +0800	[thread overview]
Message-ID: <570E15B9.5070205@gmail.com> (raw)
In-Reply-To: <56F3E6AB.5070902@redhat.com>

On 2016/3/24 21:07, Paolo Bonzini wrote:
>
>
> On 24/03/2016 14:06, Yang Zhang wrote:
>>
>> I mean why not keep the old way that only activate the eager_fpu while
>> guest sees the MPX bit in CPUID, like:
>>
>> vcpu->arch.eager_fpu = use_eager_fpu() && guest_cpuid_has_mpx(vcpu);
>
> If the host uses eager FPU you can assume that it's faster than lazy FPU.
>
> Paolo
>
>> Besides, vmx_fpu_activate is called when do vcpu_reset. So it seems no
>> need to call fpu_activate() here again.

Hi Paolo

The check in kvm_update_cpuid of fpu is strange since nothing relies on 
cpuid now. How about the following change?

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index bbbaa80..da4e6ad 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -114,9 +114,6 @@ int kvm_update_cpuid(struct kvm_vcpu *vcpu)
         if (best && (best->eax & (F(XSAVES) | F(XSAVEC))))
                 best->ebx = xstate_required_size(vcpu->arch.xcr0, true);

-       if (use_eager_fpu())
-               kvm_x86_ops->fpu_activate(vcpu);
-
         /*
          * The existing code assumes virtual address is 48-bit in the 
canonical
          * address checks; exit if it is ever changed.
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 9b7798c..8f57335 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7453,6 +7453,9 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool 
init_event)
         vcpu->arch.regs_avail = ~0;
         vcpu->arch.regs_dirty = ~0;

+       if (use_eager_fpu())
+               kvm_x86_ops->fpu_activate(vcpu);
+
         kvm_x86_ops->vcpu_reset(vcpu, init_event);
  }


-- 
best regards
yang

  reply	other threads:[~2016-04-13  9:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-08 11:44 [PATCH 0/2] KVM: x86: disable MPX if host did not enable MPX XSAVE features Paolo Bonzini
2016-03-08 11:44 ` [PATCH 1/2] " Paolo Bonzini
     [not found]   ` <CA+3C=r-NVn__gPVdYRSypzjfejRBgB4VVY5OpckS2QGjXnUu2Q@mail.gmail.com>
2016-03-11 12:09     ` Paolo Bonzini
2016-03-24 13:06       ` Yang Zhang
2016-03-24 13:07         ` Paolo Bonzini
2016-04-13  9:47           ` Yang Zhang [this message]
2016-05-10 12:38             ` Paolo Bonzini
2016-03-08 11:44 ` [PATCH 2/2] KVM: x86: remove eager_fpu field of struct kvm_vcpu_arch Paolo Bonzini
2016-03-10 12:28 ` [PATCH 0/2] KVM: x86: disable MPX if host did not enable MPX XSAVE features Xiao Guangrong
2016-03-10 12:30   ` Paolo Bonzini
2016-03-10 17:35     ` Ingo Molnar
2016-03-10 17:38       ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=570E15B9.5070205@gmail.com \
    --to=yang.zhang.wz@gmail.com \
    --cc=guangrong.xiao@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.