[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/10] target-i386: Move xcc->kvm_required check to r
From: |
Eduardo Habkost |
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 |
From: Igor Mammedov <address@hidden>
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 <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
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
- [Qemu-devel] [PULL 00/10] X86 queue, 2016-06-14, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 02/10] pc: Add 2.7 machine, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 03/10] target-i386: Implement CPUID[0xB] (Extended Topology Enumeration), Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 01/10] target-i386: add Skylake-Client cpu model, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 05/10] target-i386: Move features logic that requires CPUState to realize time, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 07/10] target-i386: Move xcc->kvm_required check to realize time,
Eduardo Habkost <=
- [Qemu-devel] [PULL 04/10] target-i386: Remove xlevel & hv-spinlocks option fixups, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 08/10] target-i386: Use cpu_generic_init() in cpu_x86_init(), Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 06/10] target-i386: Remove assert(kvm_enabled()) from host_x86_cpu_initfn(), Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 09/10] target-i386: Consolidate calls of object_property_parse() in x86_cpu_parse_featurestr, Eduardo Habkost, 2016/06/14
- [Qemu-devel] [PULL 10/10] target-i386: Print obsolete warnings if +-features are used, Eduardo Habkost, 2016/06/14
Re: [Qemu-devel] [PULL 00/10] X86 queue, 2016-06-14, Eduardo Habkost, 2016/06/14