All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Andreas Färber" <afaerber@suse.de>,
	qemu-devel@nongnu.org, "Richard Henderson" <rth@twiddle.net>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>
Subject: [Qemu-devel] [PULL 07/10] target-i386: Move xcc->kvm_required check to realize time
Date: Tue, 14 Jun 2016 17:59:05 -0300	[thread overview]
Message-ID: <1465937948-548-8-git-send-email-ehabkost@redhat.com> (raw)
In-Reply-To: <1465937948-548-1-git-send-email-ehabkost@redhat.com>

From: Igor Mammedov <imammedo@redhat.com>

It will allow to drop custom cpu_x86_init() and use
cpu_generic_init() instead, reducing cpu_x86_create()
to a simple 3-liner.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target-i386/cpu.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index c91902f..7db632b 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -678,6 +678,14 @@ static ObjectClass *x86_cpu_class_by_name(const char *cpu_model)
     return oc;
 }
 
+static char *x86_cpu_class_get_model_name(X86CPUClass *cc)
+{
+    const char *class_name = object_class_get_name(OBJECT_CLASS(cc));
+    assert(g_str_has_suffix(class_name, X86_CPU_TYPE_SUFFIX));
+    return g_strndup(class_name,
+                     strlen(class_name) - strlen(X86_CPU_TYPE_SUFFIX));
+}
+
 struct X86CPUDefinition {
     const char *name;
     uint32_t level;
@@ -1552,7 +1560,7 @@ static void host_x86_cpu_initfn(Object *obj)
      */
     cpu->host_features = true;
 
-    /* If KVM is disabled, cpu_x86_create() will already report an error */
+    /* If KVM is disabled, x86_cpu_realizefn() will report an error later */
     if (kvm_enabled()) {
         env->cpuid_level = kvm_arch_get_supported_cpuid(s, 0x0, 0, R_EAX);
         env->cpuid_xlevel = kvm_arch_get_supported_cpuid(s, 0x80000000, 0, R_EAX);
@@ -2178,7 +2186,6 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp)
 X86CPU *cpu_x86_create(const char *cpu_model, Error **errp)
 {
     X86CPU *cpu = NULL;
-    X86CPUClass *xcc;
     ObjectClass *oc;
     gchar **model_pieces;
     char *name, *features;
@@ -2197,12 +2204,6 @@ X86CPU *cpu_x86_create(const char *cpu_model, Error **errp)
         error_setg(&error, "Unable to find CPU definition: %s", name);
         goto out;
     }
-    xcc = X86_CPU_CLASS(oc);
-
-    if (xcc->kvm_required && !kvm_enabled()) {
-        error_setg(&error, "CPU model '%s' requires KVM", name);
-        goto out;
-    }
 
     cpu = X86_CPU(object_new(object_class_get_name(oc)));
 
@@ -2909,6 +2910,13 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     static bool ht_warned;
     FeatureWord w;
 
+    if (xcc->kvm_required && !kvm_enabled()) {
+        char *name = x86_cpu_class_get_model_name(xcc);
+        error_setg(&local_err, "CPU model '%s' requires KVM", name);
+        g_free(name);
+        goto out;
+    }
+
     if (cpu->apic_id < 0) {
         error_setg(errp, "apic-id property was not initialized properly");
         return;
-- 
2.5.5

  parent reply	other threads:[~2016-06-14 20:59 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-14 20:58 [Qemu-devel] [PULL 00/10] X86 queue, 2016-06-14 Eduardo Habkost
2016-06-14 20:58 ` [Qemu-devel] [PULL 01/10] target-i386: add Skylake-Client cpu model Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 02/10] pc: Add 2.7 machine Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 03/10] target-i386: Implement CPUID[0xB] (Extended Topology Enumeration) Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 04/10] target-i386: Remove xlevel & hv-spinlocks option fixups Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 05/10] target-i386: Move features logic that requires CPUState to realize time Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 06/10] target-i386: Remove assert(kvm_enabled()) from host_x86_cpu_initfn() Eduardo Habkost
2016-06-14 20:59 ` Eduardo Habkost [this message]
2016-06-14 20:59 ` [Qemu-devel] [PULL 08/10] target-i386: Use cpu_generic_init() in cpu_x86_init() Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 09/10] target-i386: Consolidate calls of object_property_parse() in x86_cpu_parse_featurestr Eduardo Habkost
2016-06-14 20:59 ` [Qemu-devel] [PULL 10/10] target-i386: Print obsolete warnings if +-features are used Eduardo Habkost
2016-06-14 21:16   ` Paolo Bonzini
2016-06-14 21:31     ` Eduardo Habkost
2016-06-14 21:38       ` Paolo Bonzini
2016-06-14 21:46         ` Eduardo Habkost
2016-06-14 21:32 ` [Qemu-devel] [PULL 00/10] X86 queue, 2016-06-14 Eduardo Habkost
2016-06-16  9:53   ` 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=1465937948-548-8-git-send-email-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=afaerber@suse.de \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.