All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc
@ 2017-04-29 10:49 xiaoqiang zhao
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c xiaoqiang zhao
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

This patch set aims for QOM'ifying code relate with sparc.
It is part of my QOM'ify work of qemu code base.

changes since v1: 
* rebased on the latest master

xiaoqiang zhao (9):
  hw/misc: QOM'ify eccmemctl.c
  hw/dma: QOM'ify sparc32_dma.c
  hw/dma: QOM'ify sun4m_iommu.c
  hw/misc: QOM'ify slavio_misc.c
  hw/timer: QOM'ify m48txx_sysbus (pass 1)
  hw/timer: QOM'ify m48txx_sysbus (pass 2)
  hw/timer: QOM'ify slavio_timer
  hw/sparc: QOM'ify sun4m.c
  hw/sparc64: QOM'ify sun4u.c

 hw/dma/sparc32_dma.c    | 25 ++++++++++++++---------
 hw/dma/sun4m_iommu.c    | 12 +++++------
 hw/misc/eccmemctl.c     | 25 ++++++++++++++---------
 hw/misc/slavio_misc.c   | 43 ++++++++++++++++-----------------------
 hw/sparc/sun4m.c        | 54 +++++++++++++++++--------------------------------
 hw/sparc64/sun4u.c      | 20 +++++++++---------
 hw/timer/m48t59.c       | 38 +++++++++++++++++-----------------
 hw/timer/slavio_timer.c | 12 +++++------
 8 files changed, 105 insertions(+), 124 deletions(-)

-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:28   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c xiaoqiang zhao
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

* Split the old SysBus init into an instance_init and a
  DeviceClass::realize function
* Drop the old SysBus init function and use instance_init

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/misc/eccmemctl.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c
index a0071f3eae..bb7cc52b5e 100644
--- a/hw/misc/eccmemctl.c
+++ b/hw/misc/eccmemctl.c
@@ -295,22 +295,29 @@ static void ecc_reset(DeviceState *d)
     s->regs[ECC_ECR1] = 0;
 }
 
-static int ecc_init1(SysBusDevice *dev)
+static void ecc_init(Object *obj)
 {
-    ECCState *s = ECC_MEMCTL(dev);
+    ECCState *s = ECC_MEMCTL(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
     sysbus_init_irq(dev, &s->irq);
-    s->regs[0] = s->version;
-    memory_region_init_io(&s->iomem, OBJECT(dev), &ecc_mem_ops, s, "ecc", ECC_SIZE);
+
+    memory_region_init_io(&s->iomem, obj, &ecc_mem_ops, s, "ecc", ECC_SIZE);
     sysbus_init_mmio(dev, &s->iomem);
+}
+
+static void ecc_realize(DeviceState *dev, Error **errp)
+{
+    ECCState *s = ECC_MEMCTL(dev);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
+
+    s->regs[0] = s->version;
 
     if (s->version == ECC_MCC) { // SS-600MP only
         memory_region_init_io(&s->iomem_diag, OBJECT(dev), &ecc_diag_mem_ops, s,
                               "ecc.diag", ECC_DIAG_SIZE);
-        sysbus_init_mmio(dev, &s->iomem_diag);
+        sysbus_init_mmio(sbd, &s->iomem_diag);
     }
-
-    return 0;
 }
 
 static Property ecc_properties[] = {
@@ -321,9 +328,8 @@ static Property ecc_properties[] = {
 static void ecc_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = ecc_init1;
+    dc->realize = ecc_realize;
     dc->reset = ecc_reset;
     dc->vmsd = &vmstate_ecc;
     dc->props = ecc_properties;
@@ -333,6 +339,7 @@ static const TypeInfo ecc_info = {
     .name          = TYPE_ECC_MEMCTL,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(ECCState),
+    .instance_init = ecc_init,
     .class_init    = ecc_class_init,
 };
 
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:28   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c xiaoqiang zhao
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

Drop the old SysBus init function and use instance_init
and an realize function

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/dma/sparc32_dma.c | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c
index 9d545e412e..ef4c6a93c8 100644
--- a/hw/dma/sparc32_dma.c
+++ b/hw/dma/sparc32_dma.c
@@ -270,23 +270,28 @@ static const VMStateDescription vmstate_dma = {
     }
 };
 
-static int sparc32_dma_init1(SysBusDevice *sbd)
+static void sparc32_dma_init(Object *obj)
 {
-    DeviceState *dev = DEVICE(sbd);
-    DMAState *s = SPARC32_DMA(dev);
-    int reg_size;
+    DeviceState *dev = DEVICE(obj);
+    DMAState *s = SPARC32_DMA(obj);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
 
     sysbus_init_irq(sbd, &s->irq);
 
-    reg_size = s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE;
-    memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s,
-                          "dma", reg_size);
     sysbus_init_mmio(sbd, &s->iomem);
 
     qdev_init_gpio_in(dev, dma_set_irq, 1);
     qdev_init_gpio_out(dev, s->gpio, 2);
+}
 
-    return 0;
+static void sparc32_dma_realize(DeviceState *dev, Error **errp)
+{
+    DMAState *s = SPARC32_DMA(dev);
+    int reg_size;
+
+    reg_size = s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE;
+    memory_region_init_io(&s->iomem, OBJECT(dev), &dma_mem_ops, s,
+                          "dma", reg_size);
 }
 
 static Property sparc32_dma_properties[] = {
@@ -298,12 +303,11 @@ static Property sparc32_dma_properties[] = {
 static void sparc32_dma_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = sparc32_dma_init1;
     dc->reset = dma_reset;
     dc->vmsd = &vmstate_dma;
     dc->props = sparc32_dma_properties;
+    dc->realize = sparc32_dma_realize;
     /* Reason: pointer property "iommu_opaque" */
     dc->cannot_instantiate_with_device_add_yet = true;
 }
@@ -312,6 +316,7 @@ static const TypeInfo sparc32_dma_info = {
     .name          = TYPE_SPARC32_DMA,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(DMAState),
+    .instance_init = sparc32_dma_init,
     .class_init    = sparc32_dma_class_init,
 };
 
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c xiaoqiang zhao
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:28   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c xiaoqiang zhao
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

Drop the old SysBus init function and use instance_init

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/dma/sun4m_iommu.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/hw/dma/sun4m_iommu.c b/hw/dma/sun4m_iommu.c
index b3cbc54c23..335ef63cbc 100644
--- a/hw/dma/sun4m_iommu.c
+++ b/hw/dma/sun4m_iommu.c
@@ -349,17 +349,16 @@ static void iommu_reset(DeviceState *d)
     s->regs[IOMMU_MASK_ID] = IOMMU_TS_MASK;
 }
 
-static int iommu_init1(SysBusDevice *dev)
+static void iommu_init(Object *obj)
 {
-    IOMMUState *s = SUN4M_IOMMU(dev);
+    IOMMUState *s = SUN4M_IOMMU(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
     sysbus_init_irq(dev, &s->irq);
 
-    memory_region_init_io(&s->iomem, OBJECT(s), &iommu_mem_ops, s, "iommu",
+    memory_region_init_io(&s->iomem, obj, &iommu_mem_ops, s, "iommu",
                           IOMMU_NREGS * sizeof(uint32_t));
     sysbus_init_mmio(dev, &s->iomem);
-
-    return 0;
 }
 
 static Property iommu_properties[] = {
@@ -370,9 +369,7 @@ static Property iommu_properties[] = {
 static void iommu_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = iommu_init1;
     dc->reset = iommu_reset;
     dc->vmsd = &vmstate_iommu;
     dc->props = iommu_properties;
@@ -382,6 +379,7 @@ static const TypeInfo iommu_info = {
     .name          = TYPE_SUN4M_IOMMU,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(IOMMUState),
+    .instance_init = iommu_init,
     .class_init    = iommu_class_init,
 };
 
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (2 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:28   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

Drop the old SysBus init function and use instance_init

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/misc/slavio_misc.c | 43 +++++++++++++++++--------------------------
 1 file changed, 17 insertions(+), 26 deletions(-)

diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c
index edd5de0702..e1a706e828 100644
--- a/hw/misc/slavio_misc.c
+++ b/hw/misc/slavio_misc.c
@@ -414,76 +414,73 @@ static const VMStateDescription vmstate_misc = {
     }
 };
 
-static int apc_init1(SysBusDevice *dev)
+static void apc_init(Object *obj)
 {
-    APCState *s = APC(dev);
+    APCState *s = APC(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
     sysbus_init_irq(dev, &s->cpu_halt);
 
     /* Power management (APC) XXX: not a Slavio device */
-    memory_region_init_io(&s->iomem, OBJECT(s), &apc_mem_ops, s,
+    memory_region_init_io(&s->iomem, obj, &apc_mem_ops, s,
                           "apc", MISC_SIZE);
     sysbus_init_mmio(dev, &s->iomem);
-    return 0;
 }
 
-static int slavio_misc_init1(SysBusDevice *sbd)
+static void slavio_misc_init(Object *obj)
 {
-    DeviceState *dev = DEVICE(sbd);
-    MiscState *s = SLAVIO_MISC(dev);
+    DeviceState *dev = DEVICE(obj);
+    MiscState *s = SLAVIO_MISC(obj);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
 
     sysbus_init_irq(sbd, &s->irq);
     sysbus_init_irq(sbd, &s->fdc_tc);
 
     /* 8 bit registers */
     /* Slavio control */
-    memory_region_init_io(&s->cfg_iomem, OBJECT(s), &slavio_cfg_mem_ops, s,
+    memory_region_init_io(&s->cfg_iomem, obj, &slavio_cfg_mem_ops, s,
                           "configuration", MISC_SIZE);
     sysbus_init_mmio(sbd, &s->cfg_iomem);
 
     /* Diagnostics */
-    memory_region_init_io(&s->diag_iomem, OBJECT(s), &slavio_diag_mem_ops, s,
+    memory_region_init_io(&s->diag_iomem, obj, &slavio_diag_mem_ops, s,
                           "diagnostic", MISC_SIZE);
     sysbus_init_mmio(sbd, &s->diag_iomem);
 
     /* Modem control */
-    memory_region_init_io(&s->mdm_iomem, OBJECT(s), &slavio_mdm_mem_ops, s,
+    memory_region_init_io(&s->mdm_iomem, obj, &slavio_mdm_mem_ops, s,
                           "modem", MISC_SIZE);
     sysbus_init_mmio(sbd, &s->mdm_iomem);
 
     /* 16 bit registers */
     /* ss600mp diag LEDs */
-    memory_region_init_io(&s->led_iomem, OBJECT(s), &slavio_led_mem_ops, s,
+    memory_region_init_io(&s->led_iomem, obj, &slavio_led_mem_ops, s,
                           "leds", LED_SIZE);
     sysbus_init_mmio(sbd, &s->led_iomem);
 
     /* 32 bit registers */
     /* System control */
-    memory_region_init_io(&s->sysctrl_iomem, OBJECT(s), &slavio_sysctrl_mem_ops, s,
+    memory_region_init_io(&s->sysctrl_iomem, obj, &slavio_sysctrl_mem_ops, s,
                           "system-control", SYSCTRL_SIZE);
     sysbus_init_mmio(sbd, &s->sysctrl_iomem);
 
     /* AUX 1 (Misc System Functions) */
-    memory_region_init_io(&s->aux1_iomem, OBJECT(s), &slavio_aux1_mem_ops, s,
+    memory_region_init_io(&s->aux1_iomem, obj, &slavio_aux1_mem_ops, s,
                           "misc-system-functions", MISC_SIZE);
     sysbus_init_mmio(sbd, &s->aux1_iomem);
 
     /* AUX 2 (Software Powerdown Control) */
-    memory_region_init_io(&s->aux2_iomem, OBJECT(s), &slavio_aux2_mem_ops, s,
+    memory_region_init_io(&s->aux2_iomem, obj, &slavio_aux2_mem_ops, s,
                           "software-powerdown-control", MISC_SIZE);
     sysbus_init_mmio(sbd, &s->aux2_iomem);
 
     qdev_init_gpio_in(dev, slavio_set_power_fail, 1);
-
-    return 0;
 }
 
 static void slavio_misc_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = slavio_misc_init1;
     dc->reset = slavio_misc_reset;
     dc->vmsd = &vmstate_misc;
 }
@@ -492,21 +489,15 @@ static const TypeInfo slavio_misc_info = {
     .name          = TYPE_SLAVIO_MISC,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(MiscState),
+    .instance_init = slavio_misc_init,
     .class_init    = slavio_misc_class_init,
 };
 
-static void apc_class_init(ObjectClass *klass, void *data)
-{
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
-
-    k->init = apc_init1;
-}
-
 static const TypeInfo apc_info = {
     .name          = TYPE_APC,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(MiscState),
-    .class_init    = apc_class_init,
+    .instance_init = apc_init,
 };
 
 static void slavio_misc_register_types(void)
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1)
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (3 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-05-19 23:56   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2) xiaoqiang zhao
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

* split the old SysBus init function into an instance_init
  and a Device realize function
* use DeviceClass::realize instead of SysBusDeviceClass::init

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/timer/m48t59.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index 474981a6ac..eff259ef96 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -644,30 +644,31 @@ void m48t59_realize_common(M48t59State *s, Error **errp)
     vmstate_register(NULL, -1, &vmstate_m48t59, s);
 }
 
-static int m48t59_init1(SysBusDevice *dev)
+static void m48t59_init1(Object *obj)
 {
-    M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(dev);
-    M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
-    Object *o = OBJECT(dev);
+    M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(obj);
+    M48txxSysBusState *d = M48TXX_SYS_BUS(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
     M48t59State *s = &d->state;
-    Error *err = NULL;
 
     s->model = u->info.model;
     s->size = u->info.size;
     sysbus_init_irq(dev, &s->IRQ);
 
-    memory_region_init_io(&s->iomem, o, &nvram_ops, s, "m48t59.nvram",
+    memory_region_init_io(&s->iomem, obj, &nvram_ops, s, "m48t59.nvram",
                           s->size);
-    memory_region_init_io(&d->io, o, &m48t59_io_ops, s, "m48t59", 4);
-    sysbus_init_mmio(dev, &s->iomem);
-    sysbus_init_mmio(dev, &d->io);
-    m48t59_realize_common(s, &err);
-    if (err != NULL) {
-        error_free(err);
-        return -1;
-    }
+    memory_region_init_io(&d->io, obj, &m48t59_io_ops, s, "m48t59", 4);
+}
+
+static void m48t59_realize(DeviceState *dev, Error **errp)
+{
+    M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
+    M48t59State *s = &d->state;
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
 
-    return 0;
+    sysbus_init_mmio(sbd, &s->iomem);
+    sysbus_init_mmio(sbd, &d->io);
+    m48t59_realize_common(s, errp);
 }
 
 static uint32_t m48txx_sysbus_read(Nvram *obj, uint32_t addr)
@@ -696,10 +697,9 @@ static Property m48t59_sysbus_properties[] = {
 static void m48txx_sysbus_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
     NvramClass *nc = NVRAM_CLASS(klass);
 
-    k->init = m48t59_init1;
+    dc->realize = m48t59_realize;
     dc->reset = m48t59_reset_sysbus;
     dc->props = m48t59_sysbus_properties;
     nc->read = m48txx_sysbus_read;
@@ -725,6 +725,7 @@ static const TypeInfo m48txx_sysbus_type_info = {
     .name = TYPE_M48TXX_SYS_BUS,
     .parent = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(M48txxSysBusState),
+    .instance_init = m48t59_init1,
     .abstract = true,
     .class_init = m48txx_sysbus_class_init,
     .interfaces = (InterfaceInfo[]) {
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2)
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (4 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-05-20  0:04   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer xiaoqiang zhao
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

assign DeviceClass::vmsd instead of using vmstate_register function

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/timer/m48t59.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index eff259ef96..3a9f541c9b 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -640,8 +640,6 @@ void m48t59_realize_common(M48t59State *s, Error **errp)
         s->wd_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, &watchdog_cb, s);
     }
     qemu_get_timedate(&s->alarm, 0);
-
-    vmstate_register(NULL, -1, &vmstate_m48t59, s);
 }
 
 static void m48t59_init1(Object *obj)
@@ -702,6 +700,7 @@ static void m48txx_sysbus_class_init(ObjectClass *klass, void *data)
     dc->realize = m48t59_realize;
     dc->reset = m48t59_reset_sysbus;
     dc->props = m48t59_sysbus_properties;
+    dc->vmsd = &vmstate_m48t59;
     nc->read = m48txx_sysbus_read;
     nc->write = m48txx_sysbus_write;
     nc->toggle_lock = m48txx_sysbus_toggle_lock;
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (5 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2) xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:28   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c xiaoqiang zhao
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

rename slavio_timer_init1 to slavio_timer_init and assign
it to slavio_timer_info.instance_init, then we drop the
SysBusDeviceClass::init

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/timer/slavio_timer.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c
index bfee1f3027..a8cc9c0148 100644
--- a/hw/timer/slavio_timer.c
+++ b/hw/timer/slavio_timer.c
@@ -373,9 +373,10 @@ static void slavio_timer_reset(DeviceState *d)
     s->cputimer_mode = 0;
 }
 
-static int slavio_timer_init1(SysBusDevice *dev)
+static void slavio_timer_init(Object *obj)
 {
-    SLAVIO_TIMERState *s = SLAVIO_TIMER(dev);
+    SLAVIO_TIMERState *s = SLAVIO_TIMER(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
     QEMUBH *bh;
     unsigned int i;
     TimerContext *tc;
@@ -394,14 +395,12 @@ static int slavio_timer_init1(SysBusDevice *dev)
 
         size = i == 0 ? SYS_TIMER_SIZE : CPU_TIMER_SIZE;
         snprintf(timer_name, sizeof(timer_name), "timer-%i", i);
-        memory_region_init_io(&tc->iomem, OBJECT(s), &slavio_timer_mem_ops, tc,
+        memory_region_init_io(&tc->iomem, obj, &slavio_timer_mem_ops, tc,
                               timer_name, size);
         sysbus_init_mmio(dev, &tc->iomem);
 
         sysbus_init_irq(dev, &s->cputimer[i].irq);
     }
-
-    return 0;
 }
 
 static Property slavio_timer_properties[] = {
@@ -412,9 +411,7 @@ static Property slavio_timer_properties[] = {
 static void slavio_timer_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = slavio_timer_init1;
     dc->reset = slavio_timer_reset;
     dc->vmsd = &vmstate_slavio_timer;
     dc->props = slavio_timer_properties;
@@ -424,6 +421,7 @@ static const TypeInfo slavio_timer_info = {
     .name          = TYPE_SLAVIO_TIMER,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(SLAVIO_TIMERState),
+    .instance_init = slavio_timer_init,
     .class_init    = slavio_timer_class_init,
 };
 
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (6 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:29   ` Philippe Mathieu-Daudé
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c xiaoqiang zhao
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

Drop the old SysBusDeviceClass::init and use instance_init
or DeviceClass::realize instead

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/sparc/sun4m.c | 54 +++++++++++++++++++-----------------------------------
 1 file changed, 19 insertions(+), 35 deletions(-)

diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 5f022cc08d..0faff4619f 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -585,30 +585,23 @@ typedef struct IDRegState {
     MemoryRegion mem;
 } IDRegState;
 
-static int idreg_init1(SysBusDevice *dev)
+static void idreg_init1(Object *obj)
 {
-    IDRegState *s = MACIO_ID_REGISTER(dev);
+    IDRegState *s = MACIO_ID_REGISTER(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
-    memory_region_init_ram(&s->mem, OBJECT(s),
+    memory_region_init_ram(&s->mem, obj,
                            "sun4m.idreg", sizeof(idreg_data), &error_fatal);
     vmstate_register_ram_global(&s->mem);
     memory_region_set_readonly(&s->mem, true);
     sysbus_init_mmio(dev, &s->mem);
-    return 0;
-}
-
-static void idreg_class_init(ObjectClass *klass, void *data)
-{
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
-
-    k->init = idreg_init1;
 }
 
 static const TypeInfo idreg_info = {
     .name          = TYPE_MACIO_ID_REGISTER,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(IDRegState),
-    .class_init    = idreg_class_init,
+    .instance_init = idreg_init1,
 };
 
 #define TYPE_TCX_AFX "tcx_afx"
@@ -633,28 +626,21 @@ static void afx_init(hwaddr addr)
     sysbus_mmio_map(s, 0, addr);
 }
 
-static int afx_init1(SysBusDevice *dev)
+static void afx_init1(Object *obj)
 {
-    AFXState *s = TCX_AFX(dev);
+    AFXState *s = TCX_AFX(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
-    memory_region_init_ram(&s->mem, OBJECT(s), "sun4m.afx", 4, &error_fatal);
+    memory_region_init_ram(&s->mem, obj, "sun4m.afx", 4, &error_fatal);
     vmstate_register_ram_global(&s->mem);
     sysbus_init_mmio(dev, &s->mem);
-    return 0;
-}
-
-static void afx_class_init(ObjectClass *klass, void *data)
-{
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
-
-    k->init = afx_init1;
 }
 
 static const TypeInfo afx_info = {
     .name          = TYPE_TCX_AFX,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(AFXState),
-    .class_init    = afx_class_init,
+    .instance_init = afx_init1,
 };
 
 #define TYPE_OPENPROM "openprom"
@@ -707,16 +693,16 @@ static void prom_init(hwaddr addr, const char *bios_name)
     }
 }
 
-static int prom_init1(SysBusDevice *dev)
+static void prom_init1(Object *obj)
 {
-    PROMState *s = OPENPROM(dev);
+    PROMState *s = OPENPROM(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
-    memory_region_init_ram(&s->prom, OBJECT(s), "sun4m.prom", PROM_SIZE_MAX,
+    memory_region_init_ram(&s->prom, obj, "sun4m.prom", PROM_SIZE_MAX,
                            &error_fatal);
     vmstate_register_ram_global(&s->prom);
     memory_region_set_readonly(&s->prom, true);
     sysbus_init_mmio(dev, &s->prom);
-    return 0;
 }
 
 static Property prom_properties[] = {
@@ -726,9 +712,7 @@ static Property prom_properties[] = {
 static void prom_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = prom_init1;
     dc->props = prom_properties;
 }
 
@@ -737,6 +721,7 @@ static const TypeInfo prom_info = {
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(PROMState),
     .class_init    = prom_class_init,
+    .instance_init = prom_init1,
 };
 
 #define TYPE_SUN4M_MEMORY "memory"
@@ -750,14 +735,14 @@ typedef struct RamDevice {
 } RamDevice;
 
 /* System RAM */
-static int ram_init1(SysBusDevice *dev)
+static void ram_realize(DeviceState *dev, Error **errp)
 {
     RamDevice *d = SUN4M_RAM(dev);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
 
     memory_region_allocate_system_memory(&d->ram, OBJECT(d), "sun4m.ram",
                                          d->size);
-    sysbus_init_mmio(dev, &d->ram);
-    return 0;
+    sysbus_init_mmio(sbd, &d->ram);
 }
 
 static void ram_init(hwaddr addr, ram_addr_t RAM_size,
@@ -793,9 +778,8 @@ static Property ram_properties[] = {
 static void ram_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = ram_init1;
+    dc->realize = ram_realize;
     dc->props = ram_properties;
 }
 
-- 
2.11.0

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

* [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (7 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c xiaoqiang zhao
@ 2017-04-29 10:49 ` xiaoqiang zhao
  2017-04-29 22:29   ` Philippe Mathieu-Daudé
  2017-05-19 15:34 ` [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc Mark Cave-Ayland
  2017-05-20  0:09 ` Philippe Mathieu-Daudé
  10 siblings, 1 reply; 23+ messages in thread
From: xiaoqiang zhao @ 2017-04-29 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: mark.cave-ayland, david, pbonzini, atar4qemu, peter.maydell,
	edgar.iglesias

Drop the old SysBusDeviceClass::init and use instance_init
or DeviceClass::realize instead

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
 hw/sparc64/sun4u.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index d347b6616d..18b8f8bcba 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -329,16 +329,16 @@ static void prom_init(hwaddr addr, const char *bios_name)
     }
 }
 
-static int prom_init1(SysBusDevice *dev)
+static void prom_init1(Object *obj)
 {
-    PROMState *s = OPENPROM(dev);
+    PROMState *s = OPENPROM(obj);
+    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 
-    memory_region_init_ram(&s->prom, OBJECT(s), "sun4u.prom", PROM_SIZE_MAX,
+    memory_region_init_ram(&s->prom, obj, "sun4u.prom", PROM_SIZE_MAX,
                            &error_fatal);
     vmstate_register_ram_global(&s->prom);
     memory_region_set_readonly(&s->prom, true);
     sysbus_init_mmio(dev, &s->prom);
-    return 0;
 }
 
 static Property prom_properties[] = {
@@ -348,9 +348,7 @@ static Property prom_properties[] = {
 static void prom_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = prom_init1;
     dc->props = prom_properties;
 }
 
@@ -359,6 +357,7 @@ static const TypeInfo prom_info = {
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(PROMState),
     .class_init    = prom_class_init,
+    .instance_init = prom_init1,
 };
 
 
@@ -373,15 +372,15 @@ typedef struct RamDevice {
 } RamDevice;
 
 /* System RAM */
-static int ram_init1(SysBusDevice *dev)
+static void ram_realize(DeviceState *dev, Error **errp)
 {
     RamDevice *d = SUN4U_RAM(dev);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
 
     memory_region_init_ram(&d->ram, OBJECT(d), "sun4u.ram", d->size,
                            &error_fatal);
     vmstate_register_ram_global(&d->ram);
-    sysbus_init_mmio(dev, &d->ram);
-    return 0;
+    sysbus_init_mmio(sbd, &d->ram);
 }
 
 static void ram_init(hwaddr addr, ram_addr_t RAM_size)
@@ -409,9 +408,8 @@ static Property ram_properties[] = {
 static void ram_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
 
-    k->init = ram_init1;
+    dc->realize = ram_realize;
     dc->props = ram_properties;
 }
 
-- 
2.11.0

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

* Re: [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c xiaoqiang zhao
@ 2017-04-29 22:28   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:28 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> * Split the old SysBus init into an instance_init and a
>   DeviceClass::realize function
> * Drop the old SysBus init function and use instance_init
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/misc/eccmemctl.c | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c
> index a0071f3eae..bb7cc52b5e 100644
> --- a/hw/misc/eccmemctl.c
> +++ b/hw/misc/eccmemctl.c
> @@ -295,22 +295,29 @@ static void ecc_reset(DeviceState *d)
>      s->regs[ECC_ECR1] = 0;
>  }
>
> -static int ecc_init1(SysBusDevice *dev)
> +static void ecc_init(Object *obj)
>  {
> -    ECCState *s = ECC_MEMCTL(dev);
> +    ECCState *s = ECC_MEMCTL(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
>      sysbus_init_irq(dev, &s->irq);
> -    s->regs[0] = s->version;
> -    memory_region_init_io(&s->iomem, OBJECT(dev), &ecc_mem_ops, s, "ecc", ECC_SIZE);
> +
> +    memory_region_init_io(&s->iomem, obj, &ecc_mem_ops, s, "ecc", ECC_SIZE);
>      sysbus_init_mmio(dev, &s->iomem);
> +}
> +
> +static void ecc_realize(DeviceState *dev, Error **errp)
> +{
> +    ECCState *s = ECC_MEMCTL(dev);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
> +
> +    s->regs[0] = s->version;
>
>      if (s->version == ECC_MCC) { // SS-600MP only
>          memory_region_init_io(&s->iomem_diag, OBJECT(dev), &ecc_diag_mem_ops, s,
>                                "ecc.diag", ECC_DIAG_SIZE);
> -        sysbus_init_mmio(dev, &s->iomem_diag);
> +        sysbus_init_mmio(sbd, &s->iomem_diag);
>      }
> -
> -    return 0;
>  }
>
>  static Property ecc_properties[] = {
> @@ -321,9 +328,8 @@ static Property ecc_properties[] = {
>  static void ecc_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = ecc_init1;
> +    dc->realize = ecc_realize;
>      dc->reset = ecc_reset;
>      dc->vmsd = &vmstate_ecc;
>      dc->props = ecc_properties;
> @@ -333,6 +339,7 @@ static const TypeInfo ecc_info = {
>      .name          = TYPE_ECC_MEMCTL,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(ECCState),
> +    .instance_init = ecc_init,
>      .class_init    = ecc_class_init,
>  };
>
>

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

* Re: [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c xiaoqiang zhao
@ 2017-04-29 22:28   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:28 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> Drop the old SysBus init function and use instance_init
> and an realize function
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/dma/sparc32_dma.c | 25 +++++++++++++++----------
>  1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c
> index 9d545e412e..ef4c6a93c8 100644
> --- a/hw/dma/sparc32_dma.c
> +++ b/hw/dma/sparc32_dma.c
> @@ -270,23 +270,28 @@ static const VMStateDescription vmstate_dma = {
>      }
>  };
>
> -static int sparc32_dma_init1(SysBusDevice *sbd)
> +static void sparc32_dma_init(Object *obj)
>  {
> -    DeviceState *dev = DEVICE(sbd);
> -    DMAState *s = SPARC32_DMA(dev);
> -    int reg_size;
> +    DeviceState *dev = DEVICE(obj);
> +    DMAState *s = SPARC32_DMA(obj);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>
>      sysbus_init_irq(sbd, &s->irq);
>
> -    reg_size = s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE;
> -    memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s,
> -                          "dma", reg_size);
>      sysbus_init_mmio(sbd, &s->iomem);
>
>      qdev_init_gpio_in(dev, dma_set_irq, 1);
>      qdev_init_gpio_out(dev, s->gpio, 2);
> +}
>
> -    return 0;
> +static void sparc32_dma_realize(DeviceState *dev, Error **errp)
> +{
> +    DMAState *s = SPARC32_DMA(dev);
> +    int reg_size;
> +
> +    reg_size = s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE;
> +    memory_region_init_io(&s->iomem, OBJECT(dev), &dma_mem_ops, s,
> +                          "dma", reg_size);
>  }
>
>  static Property sparc32_dma_properties[] = {
> @@ -298,12 +303,11 @@ static Property sparc32_dma_properties[] = {
>  static void sparc32_dma_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = sparc32_dma_init1;
>      dc->reset = dma_reset;
>      dc->vmsd = &vmstate_dma;
>      dc->props = sparc32_dma_properties;
> +    dc->realize = sparc32_dma_realize;
>      /* Reason: pointer property "iommu_opaque" */
>      dc->cannot_instantiate_with_device_add_yet = true;
>  }
> @@ -312,6 +316,7 @@ static const TypeInfo sparc32_dma_info = {
>      .name          = TYPE_SPARC32_DMA,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(DMAState),
> +    .instance_init = sparc32_dma_init,
>      .class_init    = sparc32_dma_class_init,
>  };
>
>

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

* Re: [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c xiaoqiang zhao
@ 2017-04-29 22:28   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:28 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> Drop the old SysBus init function and use instance_init
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/dma/sun4m_iommu.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/hw/dma/sun4m_iommu.c b/hw/dma/sun4m_iommu.c
> index b3cbc54c23..335ef63cbc 100644
> --- a/hw/dma/sun4m_iommu.c
> +++ b/hw/dma/sun4m_iommu.c
> @@ -349,17 +349,16 @@ static void iommu_reset(DeviceState *d)
>      s->regs[IOMMU_MASK_ID] = IOMMU_TS_MASK;
>  }
>
> -static int iommu_init1(SysBusDevice *dev)
> +static void iommu_init(Object *obj)
>  {
> -    IOMMUState *s = SUN4M_IOMMU(dev);
> +    IOMMUState *s = SUN4M_IOMMU(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
>      sysbus_init_irq(dev, &s->irq);
>
> -    memory_region_init_io(&s->iomem, OBJECT(s), &iommu_mem_ops, s, "iommu",
> +    memory_region_init_io(&s->iomem, obj, &iommu_mem_ops, s, "iommu",
>                            IOMMU_NREGS * sizeof(uint32_t));
>      sysbus_init_mmio(dev, &s->iomem);
> -
> -    return 0;
>  }
>
>  static Property iommu_properties[] = {
> @@ -370,9 +369,7 @@ static Property iommu_properties[] = {
>  static void iommu_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = iommu_init1;
>      dc->reset = iommu_reset;
>      dc->vmsd = &vmstate_iommu;
>      dc->props = iommu_properties;
> @@ -382,6 +379,7 @@ static const TypeInfo iommu_info = {
>      .name          = TYPE_SUN4M_IOMMU,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(IOMMUState),
> +    .instance_init = iommu_init,
>      .class_init    = iommu_class_init,
>  };
>
>

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

* Re: [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c xiaoqiang zhao
@ 2017-04-29 22:28   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:28 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> Drop the old SysBus init function and use instance_init
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/misc/slavio_misc.c | 43 +++++++++++++++++--------------------------
>  1 file changed, 17 insertions(+), 26 deletions(-)
>
> diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c
> index edd5de0702..e1a706e828 100644
> --- a/hw/misc/slavio_misc.c
> +++ b/hw/misc/slavio_misc.c
> @@ -414,76 +414,73 @@ static const VMStateDescription vmstate_misc = {
>      }
>  };
>
> -static int apc_init1(SysBusDevice *dev)
> +static void apc_init(Object *obj)
>  {
> -    APCState *s = APC(dev);
> +    APCState *s = APC(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
>      sysbus_init_irq(dev, &s->cpu_halt);
>
>      /* Power management (APC) XXX: not a Slavio device */
> -    memory_region_init_io(&s->iomem, OBJECT(s), &apc_mem_ops, s,
> +    memory_region_init_io(&s->iomem, obj, &apc_mem_ops, s,
>                            "apc", MISC_SIZE);
>      sysbus_init_mmio(dev, &s->iomem);
> -    return 0;
>  }
>
> -static int slavio_misc_init1(SysBusDevice *sbd)
> +static void slavio_misc_init(Object *obj)
>  {
> -    DeviceState *dev = DEVICE(sbd);
> -    MiscState *s = SLAVIO_MISC(dev);
> +    DeviceState *dev = DEVICE(obj);
> +    MiscState *s = SLAVIO_MISC(obj);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>
>      sysbus_init_irq(sbd, &s->irq);
>      sysbus_init_irq(sbd, &s->fdc_tc);
>
>      /* 8 bit registers */
>      /* Slavio control */
> -    memory_region_init_io(&s->cfg_iomem, OBJECT(s), &slavio_cfg_mem_ops, s,
> +    memory_region_init_io(&s->cfg_iomem, obj, &slavio_cfg_mem_ops, s,
>                            "configuration", MISC_SIZE);
>      sysbus_init_mmio(sbd, &s->cfg_iomem);
>
>      /* Diagnostics */
> -    memory_region_init_io(&s->diag_iomem, OBJECT(s), &slavio_diag_mem_ops, s,
> +    memory_region_init_io(&s->diag_iomem, obj, &slavio_diag_mem_ops, s,
>                            "diagnostic", MISC_SIZE);
>      sysbus_init_mmio(sbd, &s->diag_iomem);
>
>      /* Modem control */
> -    memory_region_init_io(&s->mdm_iomem, OBJECT(s), &slavio_mdm_mem_ops, s,
> +    memory_region_init_io(&s->mdm_iomem, obj, &slavio_mdm_mem_ops, s,
>                            "modem", MISC_SIZE);
>      sysbus_init_mmio(sbd, &s->mdm_iomem);
>
>      /* 16 bit registers */
>      /* ss600mp diag LEDs */
> -    memory_region_init_io(&s->led_iomem, OBJECT(s), &slavio_led_mem_ops, s,
> +    memory_region_init_io(&s->led_iomem, obj, &slavio_led_mem_ops, s,
>                            "leds", LED_SIZE);
>      sysbus_init_mmio(sbd, &s->led_iomem);
>
>      /* 32 bit registers */
>      /* System control */
> -    memory_region_init_io(&s->sysctrl_iomem, OBJECT(s), &slavio_sysctrl_mem_ops, s,
> +    memory_region_init_io(&s->sysctrl_iomem, obj, &slavio_sysctrl_mem_ops, s,
>                            "system-control", SYSCTRL_SIZE);
>      sysbus_init_mmio(sbd, &s->sysctrl_iomem);
>
>      /* AUX 1 (Misc System Functions) */
> -    memory_region_init_io(&s->aux1_iomem, OBJECT(s), &slavio_aux1_mem_ops, s,
> +    memory_region_init_io(&s->aux1_iomem, obj, &slavio_aux1_mem_ops, s,
>                            "misc-system-functions", MISC_SIZE);
>      sysbus_init_mmio(sbd, &s->aux1_iomem);
>
>      /* AUX 2 (Software Powerdown Control) */
> -    memory_region_init_io(&s->aux2_iomem, OBJECT(s), &slavio_aux2_mem_ops, s,
> +    memory_region_init_io(&s->aux2_iomem, obj, &slavio_aux2_mem_ops, s,
>                            "software-powerdown-control", MISC_SIZE);
>      sysbus_init_mmio(sbd, &s->aux2_iomem);
>
>      qdev_init_gpio_in(dev, slavio_set_power_fail, 1);
> -
> -    return 0;
>  }
>
>  static void slavio_misc_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = slavio_misc_init1;
>      dc->reset = slavio_misc_reset;
>      dc->vmsd = &vmstate_misc;
>  }
> @@ -492,21 +489,15 @@ static const TypeInfo slavio_misc_info = {
>      .name          = TYPE_SLAVIO_MISC,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(MiscState),
> +    .instance_init = slavio_misc_init,
>      .class_init    = slavio_misc_class_init,
>  };
>
> -static void apc_class_init(ObjectClass *klass, void *data)
> -{
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
> -
> -    k->init = apc_init1;
> -}
> -
>  static const TypeInfo apc_info = {
>      .name          = TYPE_APC,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(MiscState),
> -    .class_init    = apc_class_init,
> +    .instance_init = apc_init,
>  };
>
>  static void slavio_misc_register_types(void)
>

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

* Re: [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer xiaoqiang zhao
@ 2017-04-29 22:28   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:28 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> rename slavio_timer_init1 to slavio_timer_init and assign
> it to slavio_timer_info.instance_init, then we drop the
> SysBusDeviceClass::init
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/timer/slavio_timer.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c
> index bfee1f3027..a8cc9c0148 100644
> --- a/hw/timer/slavio_timer.c
> +++ b/hw/timer/slavio_timer.c
> @@ -373,9 +373,10 @@ static void slavio_timer_reset(DeviceState *d)
>      s->cputimer_mode = 0;
>  }
>
> -static int slavio_timer_init1(SysBusDevice *dev)
> +static void slavio_timer_init(Object *obj)
>  {
> -    SLAVIO_TIMERState *s = SLAVIO_TIMER(dev);
> +    SLAVIO_TIMERState *s = SLAVIO_TIMER(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>      QEMUBH *bh;
>      unsigned int i;
>      TimerContext *tc;
> @@ -394,14 +395,12 @@ static int slavio_timer_init1(SysBusDevice *dev)
>
>          size = i == 0 ? SYS_TIMER_SIZE : CPU_TIMER_SIZE;
>          snprintf(timer_name, sizeof(timer_name), "timer-%i", i);
> -        memory_region_init_io(&tc->iomem, OBJECT(s), &slavio_timer_mem_ops, tc,
> +        memory_region_init_io(&tc->iomem, obj, &slavio_timer_mem_ops, tc,
>                                timer_name, size);
>          sysbus_init_mmio(dev, &tc->iomem);
>
>          sysbus_init_irq(dev, &s->cputimer[i].irq);
>      }
> -
> -    return 0;
>  }
>
>  static Property slavio_timer_properties[] = {
> @@ -412,9 +411,7 @@ static Property slavio_timer_properties[] = {
>  static void slavio_timer_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = slavio_timer_init1;
>      dc->reset = slavio_timer_reset;
>      dc->vmsd = &vmstate_slavio_timer;
>      dc->props = slavio_timer_properties;
> @@ -424,6 +421,7 @@ static const TypeInfo slavio_timer_info = {
>      .name          = TYPE_SLAVIO_TIMER,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(SLAVIO_TIMERState),
> +    .instance_init = slavio_timer_init,
>      .class_init    = slavio_timer_class_init,
>  };
>
>

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

* Re: [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c xiaoqiang zhao
@ 2017-04-29 22:29   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:29 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> Drop the old SysBusDeviceClass::init and use instance_init
> or DeviceClass::realize instead
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/sparc/sun4m.c | 54 +++++++++++++++++++-----------------------------------
>  1 file changed, 19 insertions(+), 35 deletions(-)
>
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index 5f022cc08d..0faff4619f 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -585,30 +585,23 @@ typedef struct IDRegState {
>      MemoryRegion mem;
>  } IDRegState;
>
> -static int idreg_init1(SysBusDevice *dev)
> +static void idreg_init1(Object *obj)
>  {
> -    IDRegState *s = MACIO_ID_REGISTER(dev);
> +    IDRegState *s = MACIO_ID_REGISTER(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
> -    memory_region_init_ram(&s->mem, OBJECT(s),
> +    memory_region_init_ram(&s->mem, obj,
>                             "sun4m.idreg", sizeof(idreg_data), &error_fatal);
>      vmstate_register_ram_global(&s->mem);
>      memory_region_set_readonly(&s->mem, true);
>      sysbus_init_mmio(dev, &s->mem);
> -    return 0;
> -}
> -
> -static void idreg_class_init(ObjectClass *klass, void *data)
> -{
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
> -
> -    k->init = idreg_init1;
>  }
>
>  static const TypeInfo idreg_info = {
>      .name          = TYPE_MACIO_ID_REGISTER,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(IDRegState),
> -    .class_init    = idreg_class_init,
> +    .instance_init = idreg_init1,
>  };
>
>  #define TYPE_TCX_AFX "tcx_afx"
> @@ -633,28 +626,21 @@ static void afx_init(hwaddr addr)
>      sysbus_mmio_map(s, 0, addr);
>  }
>
> -static int afx_init1(SysBusDevice *dev)
> +static void afx_init1(Object *obj)
>  {
> -    AFXState *s = TCX_AFX(dev);
> +    AFXState *s = TCX_AFX(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
> -    memory_region_init_ram(&s->mem, OBJECT(s), "sun4m.afx", 4, &error_fatal);
> +    memory_region_init_ram(&s->mem, obj, "sun4m.afx", 4, &error_fatal);
>      vmstate_register_ram_global(&s->mem);
>      sysbus_init_mmio(dev, &s->mem);
> -    return 0;
> -}
> -
> -static void afx_class_init(ObjectClass *klass, void *data)
> -{
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
> -
> -    k->init = afx_init1;
>  }
>
>  static const TypeInfo afx_info = {
>      .name          = TYPE_TCX_AFX,
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(AFXState),
> -    .class_init    = afx_class_init,
> +    .instance_init = afx_init1,
>  };
>
>  #define TYPE_OPENPROM "openprom"
> @@ -707,16 +693,16 @@ static void prom_init(hwaddr addr, const char *bios_name)
>      }
>  }
>
> -static int prom_init1(SysBusDevice *dev)
> +static void prom_init1(Object *obj)
>  {
> -    PROMState *s = OPENPROM(dev);
> +    PROMState *s = OPENPROM(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
> -    memory_region_init_ram(&s->prom, OBJECT(s), "sun4m.prom", PROM_SIZE_MAX,
> +    memory_region_init_ram(&s->prom, obj, "sun4m.prom", PROM_SIZE_MAX,
>                             &error_fatal);
>      vmstate_register_ram_global(&s->prom);
>      memory_region_set_readonly(&s->prom, true);
>      sysbus_init_mmio(dev, &s->prom);
> -    return 0;
>  }
>
>  static Property prom_properties[] = {
> @@ -726,9 +712,7 @@ static Property prom_properties[] = {
>  static void prom_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = prom_init1;
>      dc->props = prom_properties;
>  }
>
> @@ -737,6 +721,7 @@ static const TypeInfo prom_info = {
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(PROMState),
>      .class_init    = prom_class_init,
> +    .instance_init = prom_init1,
>  };
>
>  #define TYPE_SUN4M_MEMORY "memory"
> @@ -750,14 +735,14 @@ typedef struct RamDevice {
>  } RamDevice;
>
>  /* System RAM */
> -static int ram_init1(SysBusDevice *dev)
> +static void ram_realize(DeviceState *dev, Error **errp)
>  {
>      RamDevice *d = SUN4M_RAM(dev);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
>
>      memory_region_allocate_system_memory(&d->ram, OBJECT(d), "sun4m.ram",
>                                           d->size);
> -    sysbus_init_mmio(dev, &d->ram);
> -    return 0;
> +    sysbus_init_mmio(sbd, &d->ram);
>  }
>
>  static void ram_init(hwaddr addr, ram_addr_t RAM_size,
> @@ -793,9 +778,8 @@ static Property ram_properties[] = {
>  static void ram_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = ram_init1;
> +    dc->realize = ram_realize;
>      dc->props = ram_properties;
>  }
>
>

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

* Re: [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c xiaoqiang zhao
@ 2017-04-29 22:29   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-04-29 22:29 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> Drop the old SysBusDeviceClass::init and use instance_init
> or DeviceClass::realize instead
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/sparc64/sun4u.c | 20 +++++++++-----------
>  1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index d347b6616d..18b8f8bcba 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -329,16 +329,16 @@ static void prom_init(hwaddr addr, const char *bios_name)
>      }
>  }
>
> -static int prom_init1(SysBusDevice *dev)
> +static void prom_init1(Object *obj)
>  {
> -    PROMState *s = OPENPROM(dev);
> +    PROMState *s = OPENPROM(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
> -    memory_region_init_ram(&s->prom, OBJECT(s), "sun4u.prom", PROM_SIZE_MAX,
> +    memory_region_init_ram(&s->prom, obj, "sun4u.prom", PROM_SIZE_MAX,
>                             &error_fatal);
>      vmstate_register_ram_global(&s->prom);
>      memory_region_set_readonly(&s->prom, true);
>      sysbus_init_mmio(dev, &s->prom);
> -    return 0;
>  }
>
>  static Property prom_properties[] = {
> @@ -348,9 +348,7 @@ static Property prom_properties[] = {
>  static void prom_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = prom_init1;
>      dc->props = prom_properties;
>  }
>
> @@ -359,6 +357,7 @@ static const TypeInfo prom_info = {
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(PROMState),
>      .class_init    = prom_class_init,
> +    .instance_init = prom_init1,
>  };
>
>
> @@ -373,15 +372,15 @@ typedef struct RamDevice {
>  } RamDevice;
>
>  /* System RAM */
> -static int ram_init1(SysBusDevice *dev)
> +static void ram_realize(DeviceState *dev, Error **errp)
>  {
>      RamDevice *d = SUN4U_RAM(dev);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
>
>      memory_region_init_ram(&d->ram, OBJECT(d), "sun4u.ram", d->size,
>                             &error_fatal);
>      vmstate_register_ram_global(&d->ram);
> -    sysbus_init_mmio(dev, &d->ram);
> -    return 0;
> +    sysbus_init_mmio(sbd, &d->ram);
>  }
>
>  static void ram_init(hwaddr addr, ram_addr_t RAM_size)
> @@ -409,9 +408,8 @@ static Property ram_properties[] = {
>  static void ram_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>
> -    k->init = ram_init1;
> +    dc->realize = ram_realize;
>      dc->props = ram_properties;
>  }
>
>

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

* Re: [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (8 preceding siblings ...)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c xiaoqiang zhao
@ 2017-05-19 15:34 ` Mark Cave-Ayland
  2017-05-20  0:09 ` Philippe Mathieu-Daudé
  10 siblings, 0 replies; 23+ messages in thread
From: Mark Cave-Ayland @ 2017-05-19 15:34 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, pbonzini, atar4qemu, david

On 29/04/17 11:49, xiaoqiang zhao wrote:

> This patch set aims for QOM'ifying code relate with sparc.
> It is part of my QOM'ify work of qemu code base.
> 
> changes since v1: 
> * rebased on the latest master
> 
> xiaoqiang zhao (9):
>   hw/misc: QOM'ify eccmemctl.c
>   hw/dma: QOM'ify sparc32_dma.c
>   hw/dma: QOM'ify sun4m_iommu.c
>   hw/misc: QOM'ify slavio_misc.c
>   hw/timer: QOM'ify m48txx_sysbus (pass 1)
>   hw/timer: QOM'ify m48txx_sysbus (pass 2)
>   hw/timer: QOM'ify slavio_timer
>   hw/sparc: QOM'ify sun4m.c
>   hw/sparc64: QOM'ify sun4u.c
> 
>  hw/dma/sparc32_dma.c    | 25 ++++++++++++++---------
>  hw/dma/sun4m_iommu.c    | 12 +++++------
>  hw/misc/eccmemctl.c     | 25 ++++++++++++++---------
>  hw/misc/slavio_misc.c   | 43 ++++++++++++++++-----------------------
>  hw/sparc/sun4m.c        | 54 +++++++++++++++++--------------------------------
>  hw/sparc64/sun4u.c      | 20 +++++++++---------
>  hw/timer/m48t59.c       | 38 +++++++++++++++++-----------------
>  hw/timer/slavio_timer.c | 12 +++++------
>  8 files changed, 105 insertions(+), 124 deletions(-)

I've finally found time to take a look at these and they look good to me.

I'll wait a few days to see if anyone has any comments (particularly
relating to the m48t59 device since that it appears that device is also
used by PReP) but if I hear nothing then I'll apply to my qemu-sparc branch.

And please do accept my apologies that it has taken so long to review
these patches, I will aspire to do much better in future.


ATB,

Mark.

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

* Re: [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
@ 2017-05-19 23:56   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-19 23:56 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> * split the old SysBus init function into an instance_init
>   and a Device realize function
> * use DeviceClass::realize instead of SysBusDeviceClass::init
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/timer/m48t59.c | 35 ++++++++++++++++++-----------------
>  1 file changed, 18 insertions(+), 17 deletions(-)
>
> diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
> index 474981a6ac..eff259ef96 100644
> --- a/hw/timer/m48t59.c
> +++ b/hw/timer/m48t59.c
> @@ -644,30 +644,31 @@ void m48t59_realize_common(M48t59State *s, Error **errp)
>      vmstate_register(NULL, -1, &vmstate_m48t59, s);
>  }
>
> -static int m48t59_init1(SysBusDevice *dev)
> +static void m48t59_init1(Object *obj)
>  {
> -    M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(dev);
> -    M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
> -    Object *o = OBJECT(dev);
> +    M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(obj);
> +    M48txxSysBusState *d = M48TXX_SYS_BUS(obj);
> +    SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>      M48t59State *s = &d->state;
> -    Error *err = NULL;
>
>      s->model = u->info.model;
>      s->size = u->info.size;
>      sysbus_init_irq(dev, &s->IRQ);
>
> -    memory_region_init_io(&s->iomem, o, &nvram_ops, s, "m48t59.nvram",
> +    memory_region_init_io(&s->iomem, obj, &nvram_ops, s, "m48t59.nvram",
>                            s->size);
> -    memory_region_init_io(&d->io, o, &m48t59_io_ops, s, "m48t59", 4);
> -    sysbus_init_mmio(dev, &s->iomem);
> -    sysbus_init_mmio(dev, &d->io);
> -    m48t59_realize_common(s, &err);
> -    if (err != NULL) {
> -        error_free(err);
> -        return -1;
> -    }
> +    memory_region_init_io(&d->io, obj, &m48t59_io_ops, s, "m48t59", 4);
> +}
> +
> +static void m48t59_realize(DeviceState *dev, Error **errp)
> +{
> +    M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
> +    M48t59State *s = &d->state;
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
>
> -    return 0;
> +    sysbus_init_mmio(sbd, &s->iomem);
> +    sysbus_init_mmio(sbd, &d->io);
> +    m48t59_realize_common(s, errp);
>  }
>
>  static uint32_t m48txx_sysbus_read(Nvram *obj, uint32_t addr)
> @@ -696,10 +697,9 @@ static Property m48t59_sysbus_properties[] = {
>  static void m48txx_sysbus_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> -    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
>      NvramClass *nc = NVRAM_CLASS(klass);
>
> -    k->init = m48t59_init1;
> +    dc->realize = m48t59_realize;
>      dc->reset = m48t59_reset_sysbus;
>      dc->props = m48t59_sysbus_properties;
>      nc->read = m48txx_sysbus_read;
> @@ -725,6 +725,7 @@ static const TypeInfo m48txx_sysbus_type_info = {
>      .name = TYPE_M48TXX_SYS_BUS,
>      .parent = TYPE_SYS_BUS_DEVICE,
>      .instance_size = sizeof(M48txxSysBusState),
> +    .instance_init = m48t59_init1,
>      .abstract = true,
>      .class_init = m48txx_sysbus_class_init,
>      .interfaces = (InterfaceInfo[]) {
>

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

* Re: [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2)
  2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2) xiaoqiang zhao
@ 2017-05-20  0:04   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-20  0:04 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> assign DeviceClass::vmsd instead of using vmstate_register function
>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  hw/timer/m48t59.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
> index eff259ef96..3a9f541c9b 100644
> --- a/hw/timer/m48t59.c
> +++ b/hw/timer/m48t59.c
> @@ -640,8 +640,6 @@ void m48t59_realize_common(M48t59State *s, Error **errp)
>          s->wd_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, &watchdog_cb, s);
>      }
>      qemu_get_timedate(&s->alarm, 0);
> -
> -    vmstate_register(NULL, -1, &vmstate_m48t59, s);
>  }
>
>  static void m48t59_init1(Object *obj)
> @@ -702,6 +700,7 @@ static void m48txx_sysbus_class_init(ObjectClass *klass, void *data)
>      dc->realize = m48t59_realize;
>      dc->reset = m48t59_reset_sysbus;
>      dc->props = m48t59_sysbus_properties;
> +    dc->vmsd = &vmstate_m48t59;
>      nc->read = m48txx_sysbus_read;
>      nc->write = m48txx_sysbus_write;
>      nc->toggle_lock = m48txx_sysbus_toggle_lock;
>

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

* Re: [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc
  2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
                   ` (9 preceding siblings ...)
  2017-05-19 15:34 ` [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc Mark Cave-Ayland
@ 2017-05-20  0:09 ` Philippe Mathieu-Daudé
       [not found]   ` <C2B7E73D-27BA-40BE-927B-EC047A4BF5BA@163.com>
  10 siblings, 1 reply; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-20  0:09 UTC (permalink / raw)
  To: xiaoqiang zhao, qemu-devel
  Cc: edgar.iglesias, peter.maydell, mark.cave-ayland, pbonzini,
	atar4qemu, david

Hi Xiaoqiang,

On 04/29/2017 07:49 AM, xiaoqiang zhao wrote:
> This patch set aims for QOM'ifying code relate with sparc.
> It is part of my QOM'ify work of qemu code base.
>
> changes since v1:
> * rebased on the latest master
>
> xiaoqiang zhao (9):
>   hw/misc: QOM'ify eccmemctl.c
>   hw/dma: QOM'ify sparc32_dma.c
>   hw/dma: QOM'ify sun4m_iommu.c
>   hw/misc: QOM'ify slavio_misc.c
>   hw/timer: QOM'ify m48txx_sysbus (pass 1)
>   hw/timer: QOM'ify m48txx_sysbus (pass 2)

I think you can squash those 2. Any particular reason you did pass 2 in 
another commit?

>   hw/timer: QOM'ify slavio_timer
>   hw/sparc: QOM'ify sun4m.c
>   hw/sparc64: QOM'ify sun4u.c
>
>  hw/dma/sparc32_dma.c    | 25 ++++++++++++++---------
>  hw/dma/sun4m_iommu.c    | 12 +++++------
>  hw/misc/eccmemctl.c     | 25 ++++++++++++++---------
>  hw/misc/slavio_misc.c   | 43 ++++++++++++++++-----------------------
>  hw/sparc/sun4m.c        | 54 +++++++++++++++++--------------------------------
>  hw/sparc64/sun4u.c      | 20 +++++++++---------
>  hw/timer/m48t59.c       | 38 +++++++++++++++++-----------------
>  hw/timer/slavio_timer.c | 12 +++++------
>  8 files changed, 105 insertions(+), 124 deletions(-)

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

* Re: [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc
       [not found]   ` <C2B7E73D-27BA-40BE-927B-EC047A4BF5BA@163.com>
@ 2017-05-25  7:17     ` Mark Cave-Ayland
  2017-05-25  7:48       ` Zhaoxiangqiang
  0 siblings, 1 reply; 23+ messages in thread
From: Mark Cave-Ayland @ 2017-05-25  7:17 UTC (permalink / raw)
  To: 赵小强, Philippe Mathieu-Daudé
  Cc: qemu-devel, edgar.iglesias, peter.maydell, pbonzini, atar4qemu, david

On 20/05/17 01:28, 赵小强 wrote:

> 在 2017年5月20日,08:09,Philippe Mathieu-Daudé <f4bug@amsat.org> 写道:
> 
>>>
>>> changes since v1:
>>> * rebased on the latest master
>>>
>>> xiaoqiang zhao (9):
>>>  hw/misc: QOM'ify eccmemctl.c
>>>  hw/dma: QOM'ify sparc32_dma.c
>>>  hw/dma: QOM'ify sun4m_iommu.c
>>>  hw/misc: QOM'ify slavio_misc.c
>>>  hw/timer: QOM'ify m48txx_sysbus (pass 1)
>>>  hw/timer: QOM'ify m48txx_sysbus (pass 2)
>>
>> I think you can squash those 2. Any particular reason you did pass 2 in another commit?
> 
> No,squash is ok.

Okay no further comments so I'll assume everyone else is happy. Can you
send your v3 patchset rebased onto master and I'll apply it to my queue
right away.


ATB,

Mark.

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

* Re: [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc
  2017-05-25  7:17     ` Mark Cave-Ayland
@ 2017-05-25  7:48       ` Zhaoxiangqiang
  0 siblings, 0 replies; 23+ messages in thread
From: Zhaoxiangqiang @ 2017-05-25  7:48 UTC (permalink / raw)
  To: mark.cave-ayland
  Cc: qemu-devel, edgar.iglesias, peter.maydell, pbonzini, atar4qemu,
	david, f4bug


Mark Cave-Ayland 于 2017 年 5 月 25 日 星期四 写道:
> On 20/05/17 01:28, 赵小强 wrote:
> 
> > 在 2017年5月20日,08:09,Philippe Mathieu-Daudé <f4bug@amsat.org> 写道:
> > 
> >>>
> >>> changes since v1:
> >>> * rebased on the latest master
> >>>
> >>> xiaoqiang zhao (9):
> >>>  hw/misc: QOM'ify eccmemctl.c
> >>>  hw/dma: QOM'ify sparc32_dma.c
> >>>  hw/dma: QOM'ify sun4m_iommu.c
> >>>  hw/misc: QOM'ify slavio_misc.c
> >>>  hw/timer: QOM'ify m48txx_sysbus (pass 1)
> >>>  hw/timer: QOM'ify m48txx_sysbus (pass 2)
> >>
> >> I think you can squash those 2. Any particular reason you did pass 2 in another commit?
> > 
> > No,squash is ok.
> 
> Okay no further comments so I'll assume everyone else is happy. Can you
> send your v3 patchset rebased onto master and I'll apply it to my queue
> right away.
> 
> 
> ATB,
> 
> Mark.
> 
>

Ok, coming soon.

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

end of thread, other threads:[~2017-05-25  7:49 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-29 10:49 [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc xiaoqiang zhao
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 1/9] hw/misc: QOM'ify eccmemctl.c xiaoqiang zhao
2017-04-29 22:28   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 2/9] hw/dma: QOM'ify sparc32_dma.c xiaoqiang zhao
2017-04-29 22:28   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 3/9] hw/dma: QOM'ify sun4m_iommu.c xiaoqiang zhao
2017-04-29 22:28   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 4/9] hw/misc: QOM'ify slavio_misc.c xiaoqiang zhao
2017-04-29 22:28   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
2017-05-19 23:56   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 6/9] hw/timer: QOM'ify m48txx_sysbus (pass 2) xiaoqiang zhao
2017-05-20  0:04   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 7/9] hw/timer: QOM'ify slavio_timer xiaoqiang zhao
2017-04-29 22:28   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 8/9] hw/sparc: QOM'ify sun4m.c xiaoqiang zhao
2017-04-29 22:29   ` Philippe Mathieu-Daudé
2017-04-29 10:49 ` [Qemu-devel] [PATCH v2 9/9] hw/sparc64: QOM'ify sun4u.c xiaoqiang zhao
2017-04-29 22:29   ` Philippe Mathieu-Daudé
2017-05-19 15:34 ` [Qemu-devel] [PATCH v2 0/9] QOM'ify work for sparc Mark Cave-Ayland
2017-05-20  0:09 ` Philippe Mathieu-Daudé
     [not found]   ` <C2B7E73D-27BA-40BE-927B-EC047A4BF5BA@163.com>
2017-05-25  7:17     ` Mark Cave-Ayland
2017-05-25  7:48       ` Zhaoxiangqiang

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.