From: Paolo Bonzini <pbonzini@redhat.com>
To: "Zhang, Yang Z" <yang.z.zhang@intel.com>,
"Li, Liang Z" <liang.z.li@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "gleb@kernel.or" <gleb@kernel.or>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"mingo@redhat.com" <mingo@redhat.com>,
"hpa@zytor.com" <hpa@zytor.com>,
"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH] kvm/fpu: Enable eager restore kvm FPU for MPX
Date: Wed, 20 May 2015 08:41:42 +0200 [thread overview]
Message-ID: <555C2CA6.6040906@redhat.com> (raw)
In-Reply-To: <A9667DDFB95DB7438FA9D7D576C3D87E0ACDDFEF@SHSMSX104.ccr.corp.intel.com>
On 20/05/2015 07:20, Zhang, Yang Z wrote:
> Li, Liang Z wrote on 2015-05-20:
>> The MPX feature requires eager KVM FPU restore support. We have
>> verified that MPX cannot work correctly with the current lazy KVM FPU
>> restore mechanism. Eager KVM FPU restore should be enabled if the MPX
>> feature is exposed to VM.
>>
>> Signed-off-by: Liang Li <liang.z.li@intel.com>
>> ---
>> arch/x86/kvm/vmx.c | 2 ++
>> arch/x86/kvm/x86.c | 3 ++-
>> 2 files changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
>> index f7b6168..e2cccbe 100644
>> --- a/arch/x86/kvm/vmx.c
>> +++ b/arch/x86/kvm/vmx.c
>> @@ -8445,6 +8445,8 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
>> goto free_vmcs;
>> }
>>
>> + if (vmx_mpx_supported())
>> + vmx_fpu_activate(&vmx->vcpu);
>> return &vmx->vcpu;
>>
>> free_vmcs:
>
> Is it better to use guest_cpuid_has_mpx() instead of vmx_mpx_supported()?
CPUID hasn't been set yet, so I think it is okay to key it on
vmx_mpx_supported(). It will be deactivated soon afterwards.
Or even do it unconditionally; just make sure to add a comment about it.
>> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 5f38188..5993f5f
>> 100644
>> --- a/arch/x86/kvm/x86.c
>> +++ b/arch/x86/kvm/x86.c
>> @@ -7060,7 +7060,8 @@ void kvm_put_guest_fpu(struct kvm_vcpu *vcpu)
>> fpu_save_init(&vcpu->arch.guest_fpu);
>> __kernel_fpu_end();
>> ++vcpu->stat.fpu_reload;
>> - kvm_make_request(KVM_REQ_DEACTIVATE_FPU, vcpu);
>> + if (!kvm_x86_ops->mpx_supported())
>> + kvm_make_request(KVM_REQ_DEACTIVATE_FPU, vcpu);
>> trace_kvm_fpu(0);
>> }
This is a hotter path. Here it's definitely better to avoid the call to
kvm_x86_ops->mpx_supported(). Especially because, with MPX enabled, you
would call this on every userspace exit.
Yang's suggestion of using CPUID is actually more valuable here. You
could add a new field eager_fpu in kvm->arch and update it in
kvm_update_cpuid.
Thanks,
Paolo
next prev parent reply other threads:[~2015-05-20 6:41 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-20 14:35 [PATCH] kvm/fpu: Enable eager restore kvm FPU for MPX Liang Li
2015-05-20 3:00 ` Li, Liang Z
2015-05-20 5:20 ` Zhang, Yang Z
2015-05-20 6:41 ` Paolo Bonzini [this message]
2015-05-20 6:46 ` Zhang, Yang Z
2015-05-20 7:14 ` Li, Liang Z
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=555C2CA6.6040906@redhat.com \
--to=pbonzini@redhat.com \
--cc=gleb@kernel.or \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=liang.z.li@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yang.z.zhang@intel.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.