All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: "Liu, Jinsong" <jinsong.liu@intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, Stefan Weil <sw@weilnetz.de>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Gleb Natapov <gleb@redhat.com>, kvm <kvm@vger.kernel.org>
Subject: Re: [Qemu-devel] [PATCH] qemu-kvm bugfix for IA32_FEATURE_CONTROL
Date: Mon, 19 Aug 2013 16:59:46 +0200	[thread overview]
Message-ID: <521232E2.2090802@suse.de> (raw)
In-Reply-To: <DE8DF0795D48FD4CA783C40EC8292335013398F3@SHSMSX101.ccr.corp.intel.com>

Am 19.08.2013 16:31, schrieb Liu, Jinsong:
> Paolo Bonzini wrote:
>>
>> The patch looks good.  Please repost it with checkpatch.pl failures
>> fixed. 
>>
>> Paolo
> 
> Thanks Stefan and Paolo! Updated patch attached.
> 
> Regards,
> Jinsong
> 
> ===============
> From a0ddf948d40e42de862543157a5668a1c12faae6 Mon Sep 17 00:00:00 2001
> From: Liu Jinsong <jinsong.liu@intel.com>
> Date: Mon, 19 Aug 2013 09:33:30 +0800
> Subject: [PATCH] qemu-kvm bugfix for IA32_FEATURE_CONTROL
> 
> This patch is to fix the bug https://bugs.launchpad.net/qemu-kvm/+bug/1207623
> 
> IA32_FEATURE_CONTROL is pointless if not expose VMX or SMX bits to
> cpuid.1.ecx of vcpu. Current qemu-kvm will error return when kvm_put_msrs
> or kvm_get_msrs.
> 
> Signed-off-by: Liu Jinsong <jinsong.liu@intel.com>

Jinsong, if this is for upstream QEMU, then the commit message needs
some small improvements:

qemu-kvm is no longer maintained since 1.3 so it should not be occurring
any more.

Please use a prefix of "target-i386: " (the directory name) to signal
where you are changing code, i.e. x86 only.

"bugfix" is not a very telling description of what a patch is doing.

(Up to Paolo and Gleb whether they'll fix it or whether they require a
resend.)

Also please use git-send-email to submit patches and use "PATCH v2" etc.
for submission as top-level patch:
http://wiki.qemu.org/Contribute/SubmitAPatch

One question inline...

> ---
>  target-i386/kvm.c |   17 +++++++++++++++--
>  1 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/target-i386/kvm.c b/target-i386/kvm.c
> index 84ac00a..5adeb03 100644
> --- a/target-i386/kvm.c
> +++ b/target-i386/kvm.c
> @@ -65,6 +65,7 @@ static bool has_msr_star;
>  static bool has_msr_hsave_pa;
>  static bool has_msr_tsc_adjust;
>  static bool has_msr_tsc_deadline;
> +static bool has_msr_feature_control;
>  static bool has_msr_async_pf_en;
>  static bool has_msr_pv_eoi_en;
>  static bool has_msr_misc_enable;
> @@ -644,6 +645,12 @@ int kvm_arch_init_vcpu(CPUState *cs)
>  
>      qemu_add_vm_change_state_handler(cpu_update_state, env);
>  
> +    c = cpuid_find_entry(&cpuid_data.cpuid, 1, 0);
> +    if (c) {
> +        has_msr_feature_control = !!(c->ecx & CPUID_EXT_VMX) ||
> +                                  !!(c->ecx & CPUID_EXT_SMX);
> +    }
> +
>      cpuid_data.cpuid.padding = 0;
>      r = kvm_vcpu_ioctl(cs, KVM_SET_CPUID2, &cpuid_data);
>      if (r) {
> @@ -1121,7 +1128,10 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
>          if (hyperv_vapic_recommended()) {
>              kvm_msr_entry_set(&msrs[n++], HV_X64_MSR_APIC_ASSIST_PAGE, 0);
>          }
> -        kvm_msr_entry_set(&msrs[n++], MSR_IA32_FEATURE_CONTROL, env->msr_ia32_feature_control);
> +        if (has_msr_feature_control) {
> +            kvm_msr_entry_set(&msrs[n++], MSR_IA32_FEATURE_CONTROL,
> +                              env->msr_ia32_feature_control);
> +        }
>      }
>      if (env->mcg_cap) {
>          int i;
> @@ -1346,7 +1356,9 @@ static int kvm_get_msrs(X86CPU *cpu)
>      if (has_msr_misc_enable) {
>          msrs[n++].index = MSR_IA32_MISC_ENABLE;
>      }
> -    msrs[n++].index = MSR_IA32_FEATURE_CONTROL;
> +    if (has_msr_feature_control) {
> +        msrs[n++].index = MSR_IA32_FEATURE_CONTROL;
> +    }
>  
>      if (!env->tsc_valid) {
>          msrs[n++].index = MSR_IA32_TSC;
> @@ -1447,6 +1459,7 @@ static int kvm_get_msrs(X86CPU *cpu)
>              break;
>          case MSR_IA32_FEATURE_CONTROL:
>              env->msr_ia32_feature_control = msrs[i].data;
> +            break;

Was the fallthrough previously intended? Or is this a second,
unmentioned bugfix?

Regards,
Andreas

>          default:
>              if (msrs[i].index >= MSR_MC0_CTL &&
>                  msrs[i].index < MSR_MC0_CTL + (env->mcg_cap & 0xff) * 4) {
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

WARNING: multiple messages have this Message-ID (diff)
From: "Andreas Färber" <afaerber@suse.de>
To: "Liu, Jinsong" <jinsong.liu@intel.com>
Cc: Gleb Natapov <gleb@redhat.com>, kvm <kvm@vger.kernel.org>,
	Stefan Weil <sw@weilnetz.de>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] qemu-kvm bugfix for IA32_FEATURE_CONTROL
Date: Mon, 19 Aug 2013 16:59:46 +0200	[thread overview]
Message-ID: <521232E2.2090802@suse.de> (raw)
In-Reply-To: <DE8DF0795D48FD4CA783C40EC8292335013398F3@SHSMSX101.ccr.corp.intel.com>

Am 19.08.2013 16:31, schrieb Liu, Jinsong:
> Paolo Bonzini wrote:
>>
>> The patch looks good.  Please repost it with checkpatch.pl failures
>> fixed. 
>>
>> Paolo
> 
> Thanks Stefan and Paolo! Updated patch attached.
> 
> Regards,
> Jinsong
> 
> ===============
> From a0ddf948d40e42de862543157a5668a1c12faae6 Mon Sep 17 00:00:00 2001
> From: Liu Jinsong <jinsong.liu@intel.com>
> Date: Mon, 19 Aug 2013 09:33:30 +0800
> Subject: [PATCH] qemu-kvm bugfix for IA32_FEATURE_CONTROL
> 
> This patch is to fix the bug https://bugs.launchpad.net/qemu-kvm/+bug/1207623
> 
> IA32_FEATURE_CONTROL is pointless if not expose VMX or SMX bits to
> cpuid.1.ecx of vcpu. Current qemu-kvm will error return when kvm_put_msrs
> or kvm_get_msrs.
> 
> Signed-off-by: Liu Jinsong <jinsong.liu@intel.com>

Jinsong, if this is for upstream QEMU, then the commit message needs
some small improvements:

qemu-kvm is no longer maintained since 1.3 so it should not be occurring
any more.

Please use a prefix of "target-i386: " (the directory name) to signal
where you are changing code, i.e. x86 only.

"bugfix" is not a very telling description of what a patch is doing.

(Up to Paolo and Gleb whether they'll fix it or whether they require a
resend.)

Also please use git-send-email to submit patches and use "PATCH v2" etc.
for submission as top-level patch:
http://wiki.qemu.org/Contribute/SubmitAPatch

One question inline...

> ---
>  target-i386/kvm.c |   17 +++++++++++++++--
>  1 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/target-i386/kvm.c b/target-i386/kvm.c
> index 84ac00a..5adeb03 100644
> --- a/target-i386/kvm.c
> +++ b/target-i386/kvm.c
> @@ -65,6 +65,7 @@ static bool has_msr_star;
>  static bool has_msr_hsave_pa;
>  static bool has_msr_tsc_adjust;
>  static bool has_msr_tsc_deadline;
> +static bool has_msr_feature_control;
>  static bool has_msr_async_pf_en;
>  static bool has_msr_pv_eoi_en;
>  static bool has_msr_misc_enable;
> @@ -644,6 +645,12 @@ int kvm_arch_init_vcpu(CPUState *cs)
>  
>      qemu_add_vm_change_state_handler(cpu_update_state, env);
>  
> +    c = cpuid_find_entry(&cpuid_data.cpuid, 1, 0);
> +    if (c) {
> +        has_msr_feature_control = !!(c->ecx & CPUID_EXT_VMX) ||
> +                                  !!(c->ecx & CPUID_EXT_SMX);
> +    }
> +
>      cpuid_data.cpuid.padding = 0;
>      r = kvm_vcpu_ioctl(cs, KVM_SET_CPUID2, &cpuid_data);
>      if (r) {
> @@ -1121,7 +1128,10 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
>          if (hyperv_vapic_recommended()) {
>              kvm_msr_entry_set(&msrs[n++], HV_X64_MSR_APIC_ASSIST_PAGE, 0);
>          }
> -        kvm_msr_entry_set(&msrs[n++], MSR_IA32_FEATURE_CONTROL, env->msr_ia32_feature_control);
> +        if (has_msr_feature_control) {
> +            kvm_msr_entry_set(&msrs[n++], MSR_IA32_FEATURE_CONTROL,
> +                              env->msr_ia32_feature_control);
> +        }
>      }
>      if (env->mcg_cap) {
>          int i;
> @@ -1346,7 +1356,9 @@ static int kvm_get_msrs(X86CPU *cpu)
>      if (has_msr_misc_enable) {
>          msrs[n++].index = MSR_IA32_MISC_ENABLE;
>      }
> -    msrs[n++].index = MSR_IA32_FEATURE_CONTROL;
> +    if (has_msr_feature_control) {
> +        msrs[n++].index = MSR_IA32_FEATURE_CONTROL;
> +    }
>  
>      if (!env->tsc_valid) {
>          msrs[n++].index = MSR_IA32_TSC;
> @@ -1447,6 +1459,7 @@ static int kvm_get_msrs(X86CPU *cpu)
>              break;
>          case MSR_IA32_FEATURE_CONTROL:
>              env->msr_ia32_feature_control = msrs[i].data;
> +            break;

Was the fallthrough previously intended? Or is this a second,
unmentioned bugfix?

Regards,
Andreas

>          default:
>              if (msrs[i].index >= MSR_MC0_CTL &&
>                  msrs[i].index < MSR_MC0_CTL + (env->mcg_cap & 0xff) * 4) {
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2013-08-19 14:59 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-18 18:23 [PATCH] qemu-kvm bugfix for IA32_FEATURE_CONTROL Liu, Jinsong
2013-08-18 18:23 ` [Qemu-devel] " Liu, Jinsong
2013-08-18 18:37 ` Stefan Weil
2013-08-18 18:37   ` [Qemu-devel] " Stefan Weil
2013-08-19  9:22 ` Paolo Bonzini
2013-08-19  9:22   ` [Qemu-devel] " Paolo Bonzini
2013-08-19 14:31   ` Liu, Jinsong
2013-08-19 14:31     ` [Qemu-devel] " Liu, Jinsong
2013-08-19 14:59     ` Andreas Färber [this message]
2013-08-19 14:59       ` Andreas Färber
2013-08-19 15:20       ` Paolo Bonzini
2013-08-19 15:20         ` Paolo Bonzini
2013-08-20  6:10         ` Liu, Jinsong
2013-08-20  6:10           ` Liu, Jinsong
2013-08-20  3:33       ` Liu, Jinsong
2013-08-20  3:33         ` Liu, Jinsong
2013-08-20 16:43         ` Paolo Bonzini
2013-08-20 16:43           ` 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=521232E2.2090802@suse.de \
    --to=afaerber@suse.de \
    --cc=gleb@redhat.com \
    --cc=jinsong.liu@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    /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.