qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 16/16] hw/timer: QOM'ify tusb6010


From: hitmoon
Subject: Re: [Qemu-devel] [PATCH v3 16/16] hw/timer: QOM'ify tusb6010
Date: Fri, 19 Feb 2016 19:02:18 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0



在 2016年02月18日 21:48, Peter Maydell 写道:
On 16 February 2016 at 11:10, xiaoqiang zhao <address@hidden> wrote:
assign tusb6010_init to tusb6010_info.instance_init and drop
the SysBusDeviceClass::init

Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: xiaoqiang zhao <address@hidden>
(Again, I didn't review this patch.)

---
  hw/timer/tusb6010.c | 13 ++++++-------
  1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/hw/timer/tusb6010.c b/hw/timer/tusb6010.c
index 9f6af90..205127c 100644
--- a/hw/timer/tusb6010.c
+++ b/hw/timer/tusb6010.c
@@ -776,29 +776,27 @@ static void tusb6010_reset(DeviceState *dev)
      musb_reset(s->musb);
  }

-static int tusb6010_init(SysBusDevice *sbd)
+static void tusb6010_init(Object *obj)
  {
-    DeviceState *dev = DEVICE(sbd);
-    TUSBState *s = TUSB(dev);
+    DeviceState *dev = DEVICE(obj);
+    TUSBState *s = TUSB(obj);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);

      s->otg_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_otg_tick, s);
      s->pwr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, tusb_power_tick, s);
-    memory_region_init_io(&s->iomem[1], OBJECT(s), &tusb_async_ops, s,
+    memory_region_init_io(&s->iomem[1], obj, &tusb_async_ops, s,
                            "tusb-async", UINT32_MAX);
      sysbus_init_mmio(sbd, &s->iomem[0]);
      sysbus_init_mmio(sbd, &s->iomem[1]);
      sysbus_init_irq(sbd, &s->irq);
      qdev_init_gpio_in(dev, tusb6010_irq, musb_irq_max + 1);
      s->musb = musb_init(dev, 1);
-    return 0;
  }

  static void tusb6010_class_init(ObjectClass *klass, void *data)
  {
      DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);

-    k->init = tusb6010_init;
      dc->reset = tusb6010_reset;
  }

@@ -806,6 +804,7 @@ static const TypeInfo tusb6010_info = {
      .name          = TYPE_TUSB6010,
      .parent        = TYPE_SYS_BUS_DEVICE,
      .instance_size = sizeof(TUSBState),
+    .instance_init = tusb6010_init,
      .class_init    = tusb6010_class_init,
  };
This patch seems to break "make check":

TEST: tests/device-introspect-test... (pid=6070)
   /arm/device/introspect/list:                                         OK
   /arm/device/introspect/none:                                         OK
   /arm/device/introspect/abstract:                                     OK
   /arm/device/introspect/concrete:                                     **
ERROR:/home/petmay01/linaro/qemu-from-laptop/qemu/qom/object.c:1576:object_get_canonical_path_component:
assertion failed: (obj->parent != NULL)
Broken pipe
FAIL
GTester: last random seed: R02S57c9475befd55374bcf61f6f190cd8ad
(pid=6093)
FAIL: tests/device-introspect-test

thanks
-- PMM
Hi: peter
After some debug, I found

 s->musb = musb_init(dev, 1);

must be called in SysBus' init. Otherwise it will break the
 "/arm/device/introspect/concrete" check test.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]