qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15
@ 2013-04-16  0:46 Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 01/12] target-i386: Fix including "host" in -cpu ? output Andreas Färber
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Blue Swirl, Anthony Liguori, Igor Mammedov,
	Andreas Färber, Aurélien Jarno

Hello,

This is my current QOM CPU patch queue. Please pull.

It includes:
* -cpu ? fixes,
* preparations for x86 CPU static properties,
* preparations for x86 CPU hot-plug,
* preparations for x86 CPUID features array cleanup,
* do_interrupt cleanup for cris.

Regards,
Andreas

Cc: Anthony Liguori <anthony@codemonkey.ws>
Cc: Blue Swirl <blauwirbel@gmail.com>
Cc: Aurélien Jarno <aurelien@aurel32.net>

Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>


The following changes since commit 24a6e7f4d91e9ed5f8117ecb083431a23f8609a0:

  virtio-balloon: fix dynamic properties. (2013-04-15 17:06:58 -0500)

are available in the git repository at:

  git://github.com/afaerber/qemu-cpu.git qom-cpu

for you to fetch changes up to b21bfeead284cf212d88dfa25171fee122407bc2:

  target-cris: Override do_interrupt for pre-v32 CPU cores (2013-04-16 02:45:11 +0200)

----------------------------------------------------------------
Andreas Färber (1):
      target-cris: Override do_interrupt for pre-v32 CPU cores

Eduardo Habkost (1):
      target-i386/cpu.c: Coding style fixes

Igor Mammedov (8):
      qdev: Add qdev property for bool type
      target-i386: Consolidate error propagation in x86_cpu_realizefn()
      target-i386: Split APIC creation from initialization in x86_cpu_realizefn()
      kvmvapic: Replace FROM_SYSBUS() with QOM type cast
      ioapic: Replace FROM_SYSBUS() with QOM type cast
      target-i386: Split out CPU creation and features parsing
      cpu: Pass CPUState to *cpu_synchronize_post*()
      qdev: Set device's parent before calling realize() down inheritance chain

Jan Kiszka (2):
      target-i386: Fix including "host" in -cpu ? output
      target-i386: Improve -cpu ? features output

 cpus.c                       |  4 +-
 hw/core/qdev-properties.c    | 33 ++++++++++++++++
 hw/core/qdev.c               |  8 ++--
 hw/i386/kvmvapic.c           |  7 +++-
 hw/intc/ioapic_common.c      |  2 +-
 include/hw/qdev-properties.h | 10 +++++
 include/sysemu/kvm.h         | 12 +++---
 kvm-all.c                    |  8 +---
 kvm-stub.c                   |  4 +-
 target-cris/cpu-qom.h        |  1 +
 target-cris/cpu.c            |  8 ++++
 target-cris/helper.c         | 14 ++++---
 target-i386/cpu.c            | 89 ++++++++++++++++++++++++++++++--------------
 target-i386/cpu.h            |  1 +
 14 files changed, 145 insertions(+), 56 deletions(-)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 01/12] target-i386: Fix including "host" in -cpu ? output
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 02/12] target-i386: Improve -cpu ? features output Andreas Färber
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Jan Kiszka, Andreas Färber

From: Jan Kiszka <jan.kiszka@siemens.com>

kvm_enabled() cannot be true at this point because accelerators are
initialized much later during init. Also, hiding this makes it very hard
to discover for users. Simply dump unconditionally if CONFIG_KVM is set.

Add explanation for "host" CPU type.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 6dd993f..b8690d2 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1463,9 +1463,12 @@ void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
         snprintf(buf, sizeof(buf), "%s", def->name);
         (*cpu_fprintf)(f, "x86 %16s  %-48s\n", buf, def->model_id);
     }
-    if (kvm_enabled()) {
-        (*cpu_fprintf)(f, "x86 %16s\n", "[host]");
-    }
+#ifdef CONFIG_KVM
+    (*cpu_fprintf)(f, "x86 %16s  %-48s\n", "host",
+                   "KVM processor with all supported host features "
+                   "(only available in KVM mode)");
+#endif
+
     (*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
     listflags(buf, sizeof(buf), (uint32_t)~0, feature_name, 1);
     (*cpu_fprintf)(f, "  %s\n", buf);
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 02/12] target-i386: Improve -cpu ? features output
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 01/12] target-i386: Fix including "host" in -cpu ? output Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 03/12] qdev: Add qdev property for bool type Andreas Färber
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Jan Kiszka, Andreas Färber

From: Jan Kiszka <jan.kiszka@siemens.com>

We were missing a bunch of feature lists. Fix this by simply dumping
the meta list feature_word_info.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index b8690d2..0a4e5ae 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1470,14 +1470,12 @@ void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
 #endif
 
     (*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
-    listflags(buf, sizeof(buf), (uint32_t)~0, feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext2_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext3_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
+    for (i = 0; i < ARRAY_SIZE(feature_word_info); i++) {
+        FeatureWordInfo *fw = &feature_word_info[i];
+
+        listflags(buf, sizeof(buf), (uint32_t)~0, fw->feat_names, 1);
+        (*cpu_fprintf)(f, "  %s\n", buf);
+    }
 }
 
 CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 03/12] qdev: Add qdev property for bool type
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 01/12] target-i386: Fix including "host" in -cpu ? output Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 02/12] target-i386: Improve -cpu ? features output Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 04/12] target-i386: Consolidate error propagation in x86_cpu_realizefn() Andreas Färber
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
[AF: Use new qdev_prop_set_after_realize()]
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/core/qdev-properties.c    | 33 +++++++++++++++++++++++++++++++++
 include/hw/qdev-properties.h | 10 ++++++++++
 2 files changed, 43 insertions(+)

diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index ddde18e..ca1739e 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -120,6 +120,39 @@ PropertyInfo qdev_prop_bit = {
     .set   = set_bit,
 };
 
+/* --- bool --- */
+
+static void get_bool(Object *obj, Visitor *v, void *opaque,
+                     const char *name, Error **errp)
+{
+    DeviceState *dev = DEVICE(obj);
+    Property *prop = opaque;
+    bool *ptr = qdev_get_prop_ptr(dev, prop);
+
+    visit_type_bool(v, ptr, name, errp);
+}
+
+static void set_bool(Object *obj, Visitor *v, void *opaque,
+                     const char *name, Error **errp)
+{
+    DeviceState *dev = DEVICE(obj);
+    Property *prop = opaque;
+    bool *ptr = qdev_get_prop_ptr(dev, prop);
+
+    if (dev->realized) {
+        qdev_prop_set_after_realize(dev, name, errp);
+        return;
+    }
+
+    visit_type_bool(v, ptr, name, errp);
+}
+
+PropertyInfo qdev_prop_bool = {
+    .name  = "boolean",
+    .get   = get_bool,
+    .set   = set_bool,
+};
+
 /* --- 8bit integer --- */
 
 static void get_uint8(Object *obj, Visitor *v, void *opaque,
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index a379339..25dd1bb 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -6,6 +6,7 @@
 /*** qdev-properties.c ***/
 
 extern PropertyInfo qdev_prop_bit;
+extern PropertyInfo qdev_prop_bool;
 extern PropertyInfo qdev_prop_uint8;
 extern PropertyInfo qdev_prop_uint16;
 extern PropertyInfo qdev_prop_uint32;
@@ -52,6 +53,15 @@ extern PropertyInfo qdev_prop_arraylen;
         .defval    = (bool)_defval,                              \
         }
 
+#define DEFINE_PROP_BOOL(_name, _state, _field, _defval) {       \
+        .name      = (_name),                                    \
+        .info      = &(qdev_prop_bool),                          \
+        .offset    = offsetof(_state, _field)                    \
+            + type_check(bool, typeof_field(_state, _field)),    \
+        .qtype     = QTYPE_QBOOL,                                \
+        .defval    = (bool)_defval,                              \
+        }
+
 #define PROP_ARRAY_LEN_PREFIX "len-"
 
 /**
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 04/12] target-i386: Consolidate error propagation in x86_cpu_realizefn()
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (2 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 03/12] qdev: Add qdev property for bool type Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 05/12] target-i386: Split APIC creation from initialization " Andreas Färber
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 0a4e5ae..9d45f09 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2099,9 +2099,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     X86CPU *cpu = X86_CPU(dev);
     X86CPUClass *xcc = X86_CPU_GET_CLASS(dev);
     CPUX86State *env = &cpu->env;
-#ifndef CONFIG_USER_ONLY
     Error *local_err = NULL;
-#endif
 
     if (env->cpuid_7_0_ebx_features && env->cpuid_level < 7) {
         env->cpuid_level = 7;
@@ -2131,8 +2129,9 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     } else {
         if (check_cpuid && kvm_check_features_against_host(cpu)
             && enforce_cpuid) {
-            error_setg(errp, "Host's CPU doesn't support requested features");
-            return;
+            error_setg(&local_err,
+                       "Host's CPU doesn't support requested features");
+            goto out;
         }
 #ifdef CONFIG_KVM
         filter_features_for_kvm(cpu);
@@ -2145,8 +2144,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     if (cpu->env.cpuid_features & CPUID_APIC || smp_cpus > 1) {
         x86_cpu_apic_init(cpu, &local_err);
         if (local_err != NULL) {
-            error_propagate(errp, local_err);
-            return;
+            goto out;
         }
     }
 #endif
@@ -2155,7 +2153,12 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     qemu_init_vcpu(&cpu->env);
     cpu_reset(CPU(cpu));
 
-    xcc->parent_realize(dev, errp);
+    xcc->parent_realize(dev, &local_err);
+out:
+    if (local_err != NULL) {
+        error_propagate(errp, local_err);
+        return;
+    }
 }
 
 /* Enables contiguous-apic-ID mode, for compatibility */
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 05/12] target-i386: Split APIC creation from initialization in x86_cpu_realizefn()
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (3 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 04/12] target-i386: Consolidate error propagation in x86_cpu_realizefn() Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 06/12] kvmvapic: Replace FROM_SYSBUS() with QOM type cast Andreas Färber
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

When APIC is hotplugged during CPU hotplug, device_set_realized()
calls device_reset() on it. And if QEMU runs in KVM mode, following
call chain will fail:
    apic_reset_common()
        -> kvm_apic_vapic_base_update()
            -> kvm_vcpu_ioctl(cpu->kvm_fd,...)
due to cpu->kvm_fd not being initialized yet.

cpu->kvm_fd is initialized during qemu_init_vcpu() but x86_cpu_apic_init()
can't be moved after it because kvm_init_vcpu() -> kvm_arch_reset_vcpu()
relies on APIC to determine if CPU is BSP for setting initial env->mp_state.

So split APIC device creation from its initialization and realize APIC
after CPU is created, when it's safe to call APIC's reset method.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: liguang <lig.fnst@cn.fujitsu.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 9d45f09..5d05803 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2050,9 +2050,8 @@ static void mce_init(X86CPU *cpu)
 }
 
 #ifndef CONFIG_USER_ONLY
-static void x86_cpu_apic_init(X86CPU *cpu, Error **errp)
+static void x86_cpu_apic_create(X86CPU *cpu, Error **errp)
 {
-    static int apic_mapped;
     CPUX86State *env = &cpu->env;
     APICCommonState *apic;
     const char *apic_type = "apic";
@@ -2075,6 +2074,16 @@ static void x86_cpu_apic_init(X86CPU *cpu, Error **errp)
     /* TODO: convert to link<> */
     apic = APIC_COMMON(env->apic_state);
     apic->cpu = cpu;
+}
+
+static void x86_cpu_apic_realize(X86CPU *cpu, Error **errp)
+{
+    CPUX86State *env = &cpu->env;
+    static int apic_mapped;
+
+    if (env->apic_state == NULL) {
+        return;
+    }
 
     if (qdev_init(env->apic_state)) {
         error_setg(errp, "APIC device '%s' could not be initialized",
@@ -2092,6 +2101,10 @@ static void x86_cpu_apic_init(X86CPU *cpu, Error **errp)
         apic_mapped = 1;
     }
 }
+#else
+static void x86_cpu_apic_realize(X86CPU *cpu, Error **errp)
+{
+}
 #endif
 
 static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
@@ -2142,7 +2155,7 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
     qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
 
     if (cpu->env.cpuid_features & CPUID_APIC || smp_cpus > 1) {
-        x86_cpu_apic_init(cpu, &local_err);
+        x86_cpu_apic_create(cpu, &local_err);
         if (local_err != NULL) {
             goto out;
         }
@@ -2151,6 +2164,11 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
 
     mce_init(cpu);
     qemu_init_vcpu(&cpu->env);
+
+    x86_cpu_apic_realize(cpu, &local_err);
+    if (local_err != NULL) {
+        goto out;
+    }
     cpu_reset(CPU(cpu));
 
     xcc->parent_realize(dev, &local_err);
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 06/12] kvmvapic: Replace FROM_SYSBUS() with QOM type cast
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (4 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 05/12] target-i386: Split APIC creation from initialization " Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 07/12] ioapic: " Andreas Färber
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

... and define type name and type cast macro for kvmvapic according
to accepted convention.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/i386/kvmvapic.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index ed9b448..3a10c07 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -60,6 +60,9 @@ typedef struct VAPICROMState {
     bool rom_mapped_writable;
 } VAPICROMState;
 
+#define TYPE_VAPIC "kvmvapic"
+#define VAPIC(obj) OBJECT_CHECK(VAPICROMState, (obj), TYPE_VAPIC)
+
 #define TPR_INSTR_ABS_MODRM             0x1
 #define TPR_INSTR_MATCH_MODRM_REG       0x2
 
@@ -690,7 +693,7 @@ static const MemoryRegionOps vapic_ops = {
 
 static int vapic_init(SysBusDevice *dev)
 {
-    VAPICROMState *s = FROM_SYSBUS(VAPICROMState, dev);
+    VAPICROMState *s = VAPIC(dev);
 
     memory_region_init_io(&s->io, &vapic_ops, s, "kvmvapic", 2);
     sysbus_add_io(dev, VAPIC_IO_PORT, &s->io);
@@ -806,7 +809,7 @@ static void vapic_class_init(ObjectClass *klass, void *data)
 }
 
 static const TypeInfo vapic_type = {
-    .name          = "kvmvapic",
+    .name          = TYPE_VAPIC,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(VAPICROMState),
     .class_init    = vapic_class_init,
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 07/12] ioapic: Replace FROM_SYSBUS() with QOM type cast
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (5 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 06/12] kvmvapic: Replace FROM_SYSBUS() with QOM type cast Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 08/12] target-i386/cpu.c: Coding style fixes Andreas Färber
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/intc/ioapic_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/intc/ioapic_common.c b/hw/intc/ioapic_common.c
index 42c7adc..5c5bb3c 100644
--- a/hw/intc/ioapic_common.c
+++ b/hw/intc/ioapic_common.c
@@ -59,7 +59,7 @@ static int ioapic_dispatch_post_load(void *opaque, int version_id)
 
 static int ioapic_init_common(SysBusDevice *dev)
 {
-    IOAPICCommonState *s = FROM_SYSBUS(IOAPICCommonState, dev);
+    IOAPICCommonState *s = IOAPIC_COMMON(dev);
     IOAPICCommonClass *info;
     static int ioapic_no;
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 08/12] target-i386/cpu.c: Coding style fixes
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (6 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 07/12] ioapic: " Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 09/12] target-i386: Split out CPU creation and features parsing Andreas Färber
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Eduardo Habkost, Andreas Färber

From: Eduardo Habkost <ehabkost@redhat.com>

 * Add braces to 'if' statements;
 * Remove last TAB character from the source.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
[AF: Changed whitespace]
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 5d05803..0a84000 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1869,12 +1869,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
         if (env->cpuid_ext2_features & CPUID_EXT2_LM) {
             /* 64 bit processor */
 /* XXX: The physical address space is limited to 42 bits in exec.c. */
-            *eax = 0x00003028;	/* 48 bits virtual, 40 bits physical */
+            *eax = 0x00003028; /* 48 bits virtual, 40 bits physical */
         } else {
-            if (env->cpuid_features & CPUID_PSE36)
+            if (env->cpuid_features & CPUID_PSE36) {
                 *eax = 0x00000024; /* 36 bits physical */
-            else
+            } else {
                 *eax = 0x00000020; /* 32 bits physical */
+            }
         }
         *ebx = 0;
         *ecx = 0;
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 09/12] target-i386: Split out CPU creation and features parsing
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (7 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 08/12] target-i386/cpu.c: Coding style fixes Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*() Andreas Färber
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

Move CPU creation and features parsing into a separate cpu_x86_create()
function, so that board would be able to set board-specific CPU
properties before CPU is realized.

Keep cpu_x86_init() for compatibility with the code that uses cpu_init()
and doesn't need to modify CPU properties.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/cpu.c | 18 +++++++++++++++---
 target-i386/cpu.h |  1 +
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 0a84000..e2302d8 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1563,7 +1563,7 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp)
     object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
 }
 
-X86CPU *cpu_x86_init(const char *cpu_model)
+X86CPU *cpu_x86_create(const char *cpu_model, Error **errp)
 {
     X86CPU *cpu = NULL;
     CPUX86State *env;
@@ -1593,13 +1593,25 @@ X86CPU *cpu_x86_init(const char *cpu_model)
         goto out;
     }
 
-    object_property_set_bool(OBJECT(cpu), true, "realized", &error);
+out:
+    error_propagate(errp, error);
+    g_strfreev(model_pieces);
+    return cpu;
+}
+
+X86CPU *cpu_x86_init(const char *cpu_model)
+{
+    Error *error = NULL;
+    X86CPU *cpu;
+
+    cpu = cpu_x86_create(cpu_model, &error);
     if (error) {
         goto out;
     }
 
+    object_property_set_bool(OBJECT(cpu), true, "realized", &error);
+
 out:
-    g_strfreev(model_pieces);
     if (error) {
         fprintf(stderr, "%s\n", error_get_pretty(error));
         error_free(error);
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 2b4e319..cf1b05c 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -896,6 +896,7 @@ typedef struct CPUX86State {
 #include "cpu-qom.h"
 
 X86CPU *cpu_x86_init(const char *cpu_model);
+X86CPU *cpu_x86_create(const char *cpu_model, Error **errp);
 int cpu_x86_exec(CPUX86State *s);
 void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf);
 void x86_cpudef_setup(void);
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*()
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (8 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 09/12] target-i386: Split out CPU creation and features parsing Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-18  9:18   ` Gleb Natapov
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 11/12] qdev: Set device's parent before calling realize() down inheritance chain Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 12/12] target-cris: Override do_interrupt for pre-v32 CPU cores Andreas Färber
  11 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel
  Cc: Igor Mammedov, Marcelo Tosatti, Andreas Färber, Gleb Natapov,
	open list:Overall

From: Igor Mammedov <imammedo@redhat.com>

... so it could be called without requiring CPUArchState.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 cpus.c               |  4 ++--
 include/sysemu/kvm.h | 12 ++++++------
 kvm-all.c            |  8 ++------
 kvm-stub.c           |  4 ++--
 4 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/cpus.c b/cpus.c
index 97e9ab4..c15ff6c 100644
--- a/cpus.c
+++ b/cpus.c
@@ -419,7 +419,7 @@ void cpu_synchronize_all_post_reset(void)
     CPUArchState *cpu;
 
     for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) {
-        cpu_synchronize_post_reset(cpu);
+        cpu_synchronize_post_reset(ENV_GET_CPU(cpu));
     }
 }
 
@@ -428,7 +428,7 @@ void cpu_synchronize_all_post_init(void)
     CPUArchState *cpu;
 
     for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) {
-        cpu_synchronize_post_init(cpu);
+        cpu_synchronize_post_init(ENV_GET_CPU(cpu));
     }
 }
 
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index f2d97b5..495e6f8 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -250,8 +250,8 @@ int kvm_check_extension(KVMState *s, unsigned int extension);
 uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function,
                                       uint32_t index, int reg);
 void kvm_cpu_synchronize_state(CPUArchState *env);
-void kvm_cpu_synchronize_post_reset(CPUArchState *env);
-void kvm_cpu_synchronize_post_init(CPUArchState *env);
+void kvm_cpu_synchronize_post_reset(CPUState *cpu);
+void kvm_cpu_synchronize_post_init(CPUState *cpu);
 
 /* generic hooks - to be moved/refactored once there are more users */
 
@@ -262,17 +262,17 @@ static inline void cpu_synchronize_state(CPUArchState *env)
     }
 }
 
-static inline void cpu_synchronize_post_reset(CPUArchState *env)
+static inline void cpu_synchronize_post_reset(CPUState *cpu)
 {
     if (kvm_enabled()) {
-        kvm_cpu_synchronize_post_reset(env);
+        kvm_cpu_synchronize_post_reset(cpu);
     }
 }
 
-static inline void cpu_synchronize_post_init(CPUArchState *env)
+static inline void cpu_synchronize_post_init(CPUState *cpu)
 {
     if (kvm_enabled()) {
-        kvm_cpu_synchronize_post_init(env);
+        kvm_cpu_synchronize_post_init(cpu);
     }
 }
 
diff --git a/kvm-all.c b/kvm-all.c
index 9b433d3..fc4e17c 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1510,18 +1510,14 @@ void kvm_cpu_synchronize_state(CPUArchState *env)
     }
 }
 
-void kvm_cpu_synchronize_post_reset(CPUArchState *env)
+void kvm_cpu_synchronize_post_reset(CPUState *cpu)
 {
-    CPUState *cpu = ENV_GET_CPU(env);
-
     kvm_arch_put_registers(cpu, KVM_PUT_RESET_STATE);
     cpu->kvm_vcpu_dirty = false;
 }
 
-void kvm_cpu_synchronize_post_init(CPUArchState *env)
+void kvm_cpu_synchronize_post_init(CPUState *cpu)
 {
-    CPUState *cpu = ENV_GET_CPU(env);
-
     kvm_arch_put_registers(cpu, KVM_PUT_FULL_STATE);
     cpu->kvm_vcpu_dirty = false;
 }
diff --git a/kvm-stub.c b/kvm-stub.c
index f6137d3..723a813 100644
--- a/kvm-stub.c
+++ b/kvm-stub.c
@@ -41,11 +41,11 @@ void kvm_cpu_synchronize_state(CPUArchState *env)
 {
 }
 
-void kvm_cpu_synchronize_post_reset(CPUArchState *env)
+void kvm_cpu_synchronize_post_reset(CPUState *cpu)
 {
 }
 
-void kvm_cpu_synchronize_post_init(CPUArchState *env)
+void kvm_cpu_synchronize_post_init(CPUState *cpu)
 {
 }
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 11/12] qdev: Set device's parent before calling realize() down inheritance chain
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (9 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*() Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 12/12] target-cris: Override do_interrupt for pre-v32 CPU cores Andreas Färber
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Igor Mammedov, Andreas Färber

From: Igor Mammedov <imammedo@redhat.com>

Currently device_set_realized() sets parent only after device was realized,
but qdev_device_add() sets it before device is realized.
Make behavior consistent and alter device_set_realized() to behave like
qdev_device_add().

It will allow to set link<> properties in realize() method in classes
inherited from DEVICE.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/core/qdev.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index bab4ed7..4eb0134 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -684,10 +684,6 @@ static void device_set_realized(Object *obj, bool value, Error **err)
     Error *local_err = NULL;
 
     if (value && !dev->realized) {
-        if (dc->realize) {
-            dc->realize(dev, &local_err);
-        }
-
         if (!obj->parent && local_err == NULL) {
             static int unattached_count;
             gchar *name = g_strdup_printf("device[%d]", unattached_count++);
@@ -698,6 +694,10 @@ static void device_set_realized(Object *obj, bool value, Error **err)
             g_free(name);
         }
 
+        if (dc->realize) {
+            dc->realize(dev, &local_err);
+        }
+
         if (qdev_get_vmsd(dev) && local_err == NULL) {
             vmstate_register_with_alias_id(dev, -1, qdev_get_vmsd(dev), dev,
                                            dev->instance_id_alias,
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 12/12] target-cris: Override do_interrupt for pre-v32 CPU cores
  2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
                   ` (10 preceding siblings ...)
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 11/12] qdev: Set device's parent before calling realize() down inheritance chain Andreas Färber
@ 2013-04-16  0:46 ` Andreas Färber
  11 siblings, 0 replies; 14+ messages in thread
From: Andreas Färber @ 2013-04-16  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Edgar E. Iglesias, Andreas Färber

Instead of forwarding from cris_cpu_do_interrupt() to do_interruptv10(),
override CPUClass::do_interrupt with crisv10_cpu_do_interrupt() in the
newly introduced class_init functions.

Acked-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-cris/cpu-qom.h |  1 +
 target-cris/cpu.c     |  8 ++++++++
 target-cris/helper.c  | 14 ++++++++------
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/target-cris/cpu-qom.h b/target-cris/cpu-qom.h
index deea1d8..03829bd 100644
--- a/target-cris/cpu-qom.h
+++ b/target-cris/cpu-qom.h
@@ -74,5 +74,6 @@ static inline CRISCPU *cris_env_get_cpu(CPUCRISState *env)
 #define ENV_OFFSET offsetof(CRISCPU, env)
 
 void cris_cpu_do_interrupt(CPUState *cpu);
+void crisv10_cpu_do_interrupt(CPUState *cpu);
 
 #endif
diff --git a/target-cris/cpu.c b/target-cris/cpu.c
index 95cbf39..67181e5 100644
--- a/target-cris/cpu.c
+++ b/target-cris/cpu.c
@@ -169,30 +169,38 @@ static void cris_cpu_initfn(Object *obj)
 
 static void crisv8_cpu_class_init(ObjectClass *oc, void *data)
 {
+    CPUClass *cc = CPU_CLASS(oc);
     CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
 
     ccc->vr = 8;
+    cc->do_interrupt = crisv10_cpu_do_interrupt;
 }
 
 static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
 {
+    CPUClass *cc = CPU_CLASS(oc);
     CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
 
     ccc->vr = 9;
+    cc->do_interrupt = crisv10_cpu_do_interrupt;
 }
 
 static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
 {
+    CPUClass *cc = CPU_CLASS(oc);
     CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
 
     ccc->vr = 10;
+    cc->do_interrupt = crisv10_cpu_do_interrupt;
 }
 
 static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
 {
+    CPUClass *cc = CPU_CLASS(oc);
     CRISCPUClass *ccc = CRIS_CPU_CLASS(oc);
 
     ccc->vr = 11;
+    cc->do_interrupt = crisv10_cpu_do_interrupt;
 }
 
 static void crisv32_cpu_class_init(ObjectClass *oc, void *data)
diff --git a/target-cris/helper.c b/target-cris/helper.c
index e1ef7bc..466cc2f 100644
--- a/target-cris/helper.c
+++ b/target-cris/helper.c
@@ -45,6 +45,11 @@ void cris_cpu_do_interrupt(CPUState *cs)
     env->pregs[PR_ERP] = env->pc;
 }
 
+void crisv10_cpu_do_interrupt(CPUState *cs)
+{
+    cris_cpu_do_interrupt(cs);
+}
+
 int cpu_cris_handle_mmu_fault(CPUCRISState * env, target_ulong address, int rw,
                               int mmu_idx)
 {
@@ -109,9 +114,10 @@ int cpu_cris_handle_mmu_fault(CPUCRISState *env, target_ulong address, int rw,
     return r;
 }
 
-static void do_interruptv10(CPUCRISState *env)
+void crisv10_cpu_do_interrupt(CPUState *cs)
 {
-    D(CPUState *cs = CPU(cris_env_get_cpu(env)));
+    CRISCPU *cpu = CRIS_CPU(cs);
+    CPUCRISState *env = &cpu->env;
     int ex_vec = -1;
 
     D_LOG("exception index=%d interrupt_req=%d\n",
@@ -171,10 +177,6 @@ void cris_cpu_do_interrupt(CPUState *cs)
     CPUCRISState *env = &cpu->env;
     int ex_vec = -1;
 
-    if (env->pregs[PR_VR] < 32) {
-        return do_interruptv10(env);
-    }
-
     D_LOG("exception index=%d interrupt_req=%d\n",
           env->exception_index,
           cs->interrupt_request);
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*()
  2013-04-16  0:46 ` [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*() Andreas Färber
@ 2013-04-18  9:18   ` Gleb Natapov
  0 siblings, 0 replies; 14+ messages in thread
From: Gleb Natapov @ 2013-04-18  9:18 UTC (permalink / raw)
  To: Andreas Färber
  Cc: Igor Mammedov, Marcelo Tosatti, qemu-devel, open list:Overall

On Tue, Apr 16, 2013 at 02:46:47AM +0200, Andreas Färber wrote:
> From: Igor Mammedov <imammedo@redhat.com>
> 
> ... so it could be called without requiring CPUArchState.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Gleb Natapov <gleb@redhat.com>

> ---
>  cpus.c               |  4 ++--
>  include/sysemu/kvm.h | 12 ++++++------
>  kvm-all.c            |  8 ++------
>  kvm-stub.c           |  4 ++--
>  4 files changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/cpus.c b/cpus.c
> index 97e9ab4..c15ff6c 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -419,7 +419,7 @@ void cpu_synchronize_all_post_reset(void)
>      CPUArchState *cpu;
>  
>      for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) {
> -        cpu_synchronize_post_reset(cpu);
> +        cpu_synchronize_post_reset(ENV_GET_CPU(cpu));
>      }
>  }
>  
> @@ -428,7 +428,7 @@ void cpu_synchronize_all_post_init(void)
>      CPUArchState *cpu;
>  
>      for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) {
> -        cpu_synchronize_post_init(cpu);
> +        cpu_synchronize_post_init(ENV_GET_CPU(cpu));
>      }
>  }
>  
> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
> index f2d97b5..495e6f8 100644
> --- a/include/sysemu/kvm.h
> +++ b/include/sysemu/kvm.h
> @@ -250,8 +250,8 @@ int kvm_check_extension(KVMState *s, unsigned int extension);
>  uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function,
>                                        uint32_t index, int reg);
>  void kvm_cpu_synchronize_state(CPUArchState *env);
> -void kvm_cpu_synchronize_post_reset(CPUArchState *env);
> -void kvm_cpu_synchronize_post_init(CPUArchState *env);
> +void kvm_cpu_synchronize_post_reset(CPUState *cpu);
> +void kvm_cpu_synchronize_post_init(CPUState *cpu);
>  
>  /* generic hooks - to be moved/refactored once there are more users */
>  
> @@ -262,17 +262,17 @@ static inline void cpu_synchronize_state(CPUArchState *env)
>      }
>  }
>  
> -static inline void cpu_synchronize_post_reset(CPUArchState *env)
> +static inline void cpu_synchronize_post_reset(CPUState *cpu)
>  {
>      if (kvm_enabled()) {
> -        kvm_cpu_synchronize_post_reset(env);
> +        kvm_cpu_synchronize_post_reset(cpu);
>      }
>  }
>  
> -static inline void cpu_synchronize_post_init(CPUArchState *env)
> +static inline void cpu_synchronize_post_init(CPUState *cpu)
>  {
>      if (kvm_enabled()) {
> -        kvm_cpu_synchronize_post_init(env);
> +        kvm_cpu_synchronize_post_init(cpu);
>      }
>  }
>  
> diff --git a/kvm-all.c b/kvm-all.c
> index 9b433d3..fc4e17c 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -1510,18 +1510,14 @@ void kvm_cpu_synchronize_state(CPUArchState *env)
>      }
>  }
>  
> -void kvm_cpu_synchronize_post_reset(CPUArchState *env)
> +void kvm_cpu_synchronize_post_reset(CPUState *cpu)
>  {
> -    CPUState *cpu = ENV_GET_CPU(env);
> -
>      kvm_arch_put_registers(cpu, KVM_PUT_RESET_STATE);
>      cpu->kvm_vcpu_dirty = false;
>  }
>  
> -void kvm_cpu_synchronize_post_init(CPUArchState *env)
> +void kvm_cpu_synchronize_post_init(CPUState *cpu)
>  {
> -    CPUState *cpu = ENV_GET_CPU(env);
> -
>      kvm_arch_put_registers(cpu, KVM_PUT_FULL_STATE);
>      cpu->kvm_vcpu_dirty = false;
>  }
> diff --git a/kvm-stub.c b/kvm-stub.c
> index f6137d3..723a813 100644
> --- a/kvm-stub.c
> +++ b/kvm-stub.c
> @@ -41,11 +41,11 @@ void kvm_cpu_synchronize_state(CPUArchState *env)
>  {
>  }
>  
> -void kvm_cpu_synchronize_post_reset(CPUArchState *env)
> +void kvm_cpu_synchronize_post_reset(CPUState *cpu)
>  {
>  }
>  
> -void kvm_cpu_synchronize_post_init(CPUArchState *env)
> +void kvm_cpu_synchronize_post_init(CPUState *cpu)
>  {
>  }
>  
> -- 
> 1.8.1.4

--
			Gleb.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2013-04-18  9:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-16  0:46 [Qemu-devel] [PULL 00/12] QOM CPUState patch queue 2013-04-15 Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 01/12] target-i386: Fix including "host" in -cpu ? output Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 02/12] target-i386: Improve -cpu ? features output Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 03/12] qdev: Add qdev property for bool type Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 04/12] target-i386: Consolidate error propagation in x86_cpu_realizefn() Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 05/12] target-i386: Split APIC creation from initialization " Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 06/12] kvmvapic: Replace FROM_SYSBUS() with QOM type cast Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 07/12] ioapic: " Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 08/12] target-i386/cpu.c: Coding style fixes Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 09/12] target-i386: Split out CPU creation and features parsing Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 10/12] cpu: Pass CPUState to *cpu_synchronize_post*() Andreas Färber
2013-04-18  9:18   ` Gleb Natapov
2013-04-16  0:46 ` [Qemu-devel] [PATCH 11/12] qdev: Set device's parent before calling realize() down inheritance chain Andreas Färber
2013-04-16  0:46 ` [Qemu-devel] [PATCH 12/12] target-cris: Override do_interrupt for pre-v32 CPU cores Andreas Färber

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).