qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>
Subject: Re: [Qemu-devel] [PULL 16/16] target-i386: Move KVM default-vendor hack to instance_init
Date: Sat, 08 Feb 2014 18:28:58 +0100	[thread overview]
Message-ID: <52F6695A.7090801@suse.de> (raw)
In-Reply-To: <1391445551-6561-17-git-send-email-pbonzini@redhat.com>

Am 03.02.2014 17:39, schrieb Paolo Bonzini:
> From: Eduardo Habkost <ehabkost@redhat.com>
> 
> As we will not have a cpu_x86_find_by_name() function anymore,
> move the KVM default-vendor hack to instance_init.
> 
> Unfortunately we can't move that code to class_init because it depends
> on KVM being initialized.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  target-i386/cpu.c | 32 +++++++++++++++++++-------------
>  1 file changed, 19 insertions(+), 13 deletions(-)
> 
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index be54f84..0e8812a 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1601,18 +1601,6 @@ static int cpu_x86_find_by_name(X86CPU *cpu, x86_def_t *x86_cpu_def,
>          def = &builtin_x86_defs[i];
>          if (strcmp(name, def->name) == 0) {
>              memcpy(x86_cpu_def, def, sizeof(*def));
> -            /* sysenter isn't supported in compatibility mode on AMD,
> -             * syscall isn't supported in compatibility mode on Intel.
> -             * Normally we advertise the actual CPU vendor, but you can
> -             * override this using the 'vendor' property if you want to use
> -             * KVM's sysenter/syscall emulation in compatibility mode and
> -             * when doing cross vendor migration
> -             */
> -            if (kvm_enabled()) {
> -                uint32_t  ebx = 0, ecx = 0, edx = 0;
> -                host_cpuid(0, 0, NULL, &ebx, &ecx, &edx);
> -                x86_cpu_vendor_words2str(x86_cpu_def->vendor, ebx, edx, ecx);
> -            }
>              return 0;
>          }
>      }
> @@ -1841,7 +1829,6 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp)
>          return;
>      }
>  
> -    object_property_set_str(OBJECT(cpu), def->vendor, "vendor", errp);
>      object_property_set_int(OBJECT(cpu), def->level, "level", errp);
>      object_property_set_int(OBJECT(cpu), def->family, "family", errp);
>      object_property_set_int(OBJECT(cpu), def->model, "model", errp);
> @@ -1865,6 +1852,25 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp)
>          env->features[FEAT_KVM] |= kvm_default_features;
>      }
>      env->features[FEAT_1_ECX] |= CPUID_EXT_HYPERVISOR;
> +
> +    /* sysenter isn't supported in compatibility mode on AMD,
> +     * syscall isn't supported in compatibility mode on Intel.
> +     * Normally we advertise the actual CPU vendor, but you can
> +     * override this using the 'vendor' property if you want to use
> +     * KVM's sysenter/syscall emulation in compatibility mode and
> +     * when doing cross vendor migration
> +     */
> +    const char *vendor = def->vendor;
> +    char host_vendor[CPUID_VENDOR_SZ + 1];

Since when is it OK to declare variables in the middle of the block?
Are you planning to fix that?

Once again I note that a patch to a file under my maintenance was
applied without my review - and promptly a style bug slipped through. It
was not a bug fix, so there was no urgency in applying it.

Andreas

> +    if (kvm_enabled()) {
> +        uint32_t  ebx = 0, ecx = 0, edx = 0;
> +        host_cpuid(0, 0, NULL, &ebx, &ecx, &edx);
> +        x86_cpu_vendor_words2str(host_vendor, ebx, edx, ecx);
> +        vendor = host_vendor;
> +    }
> +
> +    object_property_set_str(OBJECT(cpu), vendor, "vendor", errp);
> +
>  }
>  
>  X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge,

-- 
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:[~2014-02-08 17:29 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-03 16:38 [Qemu-devel] [PULL 00/16] KVM changes for 2014-02-03 Paolo Bonzini
2014-02-03 16:38 ` [Qemu-devel] [PULL 01/16] target-i386: kvm_cpu_fill_host(): Kill unused code Paolo Bonzini
2014-02-03 16:38 ` [Qemu-devel] [PULL 02/16] target-i386: kvm_cpu_fill_host(): No need to check level Paolo Bonzini
2014-02-03 16:38 ` [Qemu-devel] [PULL 03/16] target-i386: kvm_cpu_fill_host(): No need to check CPU vendor Paolo Bonzini
2014-02-03 16:38 ` [Qemu-devel] [PULL 04/16] target-i386: kvm_cpu_fill_host(): No need to check xlevel2 Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 05/16] target-i386: kvm_cpu_fill_host(): Set all feature words at end of function Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 06/16] target-i386: kvm_cpu_fill_host(): Fill feature words in a loop Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 07/16] target-i386: kvm_check_features_against_host(): Kill feature word array Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 08/16] kvm: print suberror on all internal errors Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 09/16] KVM: fix coexistence of KVM and Hyper-V leaves Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 10/16] kvm: make availability of Hyper-V enlightenments dependent on KVM_CAP_HYPERV Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 11/16] kvm: make hyperv hypercall and guest os id MSRs migratable Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 12/16] kvm: make hyperv vapic assist page migratable Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 13/16] kvm: add support for hyper-v timers Paolo Bonzini
2014-03-04 15:14   ` Peter Maydell
2014-02-03 16:39 ` [Qemu-devel] [PULL 14/16] target-i386: Eliminate CONFIG_KVM #ifdefs Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 15/16] target-i386: Don't change x86_def_t struct on cpu_x86_register() Paolo Bonzini
2014-02-03 16:39 ` [Qemu-devel] [PULL 16/16] target-i386: Move KVM default-vendor hack to instance_init Paolo Bonzini
2014-02-08 17:28   ` Andreas Färber [this message]
2014-02-08 23:33     ` Paolo Bonzini
2014-02-09  0:10       ` Peter Maydell
2014-02-09  0:23         ` Peter Maydell
2014-02-09  6:57           ` Paolo Bonzini
2014-02-09  8:25             ` [Qemu-devel] [PATCH] target-i386: Don't declare variables in the middle of blocks Eduardo Habkost
2014-02-19 19:39               ` [Qemu-devel] [qom-cpu PATCH v2] " Eduardo Habkost
2014-02-20 12:48                 ` Andreas Färber
2014-02-09  8:06         ` [Qemu-devel] [PULL 16/16] target-i386: Move KVM default-vendor hack to instance_init Eduardo Habkost
2014-02-09 10:13           ` Andreas Färber
2014-02-09 13:06           ` Peter Maydell
2014-02-09  1:41       ` Andreas Färber
2014-02-09  6:52         ` Paolo Bonzini
2014-02-06 11:12 ` [Qemu-devel] [PULL 00/16] KVM changes for 2014-02-03 Peter Maydell
2014-02-06 23:41   ` Paolo Bonzini
2014-02-07  0:03     ` Peter Maydell

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=52F6695A.7090801@suse.de \
    --to=afaerber@suse.de \
    --cc=ehabkost@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).