qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices
@ 2010-12-23 17:19 Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 1/8] pl190: Implement save/restore Peter Maydell
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

This patchset adds save/restore support to the devices used by the ARM
versatilepb board which didn't already support it.

I did this in line with docs/migration.txt, and it seems to work OK. I'd
appreciate some review from somebody with a better grasp of the APIs,
though :-) In particular, am I saving the uint8_t data[NUM_PACKETS][2048]
array in stc91c111 in the right way?

Peter Maydell (8):
  pl190: Implement save/restore
  vpb_sic: Implement save/restore
  arm_sysctl: Implement save/restore
  pl050: Implement save/restore
  pl031: Implement save/restore
  pl110: Implement save/restore
  pl080: Implement save/restore
  stc91c111: Implement save/restore

 hw/arm_sysctl.c  |   17 +++++++++++++++
 hw/pl031.c       |   25 ++++++++++++++++++++++-
 hw/pl050.c       |   35 +++++++++++++++++++++++++++----
 hw/pl080.c       |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 hw/pl110.c       |   44 +++++++++++++++++++++++++++++++++++++---
 hw/pl190.c       |   36 +++++++++++++++++++++++++++++---
 hw/smc91c111.c   |   30 +++++++++++++++++++++++++++
 hw/versatilepb.c |   24 +++++++++++++++++++--
 8 files changed, 249 insertions(+), 20 deletions(-)

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

* [Qemu-devel] [PATCH 1/8] pl190: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 2/8] vpb_sic: " Peter Maydell
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/pl190.c |   36 ++++++++++++++++++++++++++++++++----
 1 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/hw/pl190.c b/hw/pl190.c
index e04e6c1..17c279b 100644
--- a/hw/pl190.c
+++ b/hw/pl190.c
@@ -212,8 +212,9 @@ static CPUWriteMemoryFunc * const pl190_writefn[] = {
    pl190_write
 };
 
-static void pl190_reset(pl190_state *s)
+static void pl190_reset(DeviceState *d)
 {
+  pl190_state *s = DO_UPCAST(pl190_state, busdev.qdev, d);
   int i;
 
   for (i = 0; i < 16; i++)
@@ -239,14 +240,41 @@ static int pl190_init(SysBusDevice *dev)
     qdev_init_gpio_in(&dev->qdev, pl190_set_irq, 32);
     sysbus_init_irq(dev, &s->irq);
     sysbus_init_irq(dev, &s->fiq);
-    pl190_reset(s);
-    /* ??? Save/restore.  */
     return 0;
 }
 
+static const VMStateDescription vmstate_pl190 = {
+    .name = "pl190",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(level, pl190_state),
+        VMSTATE_UINT32(soft_level, pl190_state),
+        VMSTATE_UINT32(irq_enable, pl190_state),
+        VMSTATE_UINT32(fiq_select, pl190_state),
+        VMSTATE_UINT32(default_addr, pl190_state),
+        VMSTATE_UINT8_ARRAY(vect_control, pl190_state, 16),
+        VMSTATE_UINT32_ARRAY(vect_addr, pl190_state, PL190_NUM_PRIO),
+        VMSTATE_UINT32_ARRAY(prio_mask, pl190_state, PL190_NUM_PRIO+1),
+        VMSTATE_INT32(protected, pl190_state),
+        VMSTATE_INT32(priority, pl190_state),
+        VMSTATE_INT32_ARRAY(prev_prio, pl190_state, PL190_NUM_PRIO),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static SysBusDeviceInfo pl190_info = {
+    .init = pl190_init,
+    .qdev.name = "pl190",
+    .qdev.size = sizeof(pl190_state),
+    .qdev.vmsd = &vmstate_pl190,
+    .qdev.reset = pl190_reset,
+    .qdev.no_user = 1,
+};
+
 static void pl190_register_devices(void)
 {
-    sysbus_register_dev("pl190", sizeof(pl190_state), pl190_init);
+    sysbus_register_withprop(&pl190_info);
 }
 
 device_init(pl190_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 2/8] vpb_sic: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 1/8] pl190: Implement save/restore Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 3/8] arm_sysctl: " Peter Maydell
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/versatilepb.c |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/hw/versatilepb.c b/hw/versatilepb.c
index be758e4..9f1bfcf 100644
--- a/hw/versatilepb.c
+++ b/hw/versatilepb.c
@@ -30,6 +30,18 @@ typedef struct vpb_sic_state
   int irq;
 } vpb_sic_state;
 
+static const VMStateDescription vmstate_vpb_sic = {
+    .name = "versatilepb_sic",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(level, vpb_sic_state),
+        VMSTATE_UINT32(mask, vpb_sic_state),
+        VMSTATE_UINT32(pic_enable, vpb_sic_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static void vpb_sic_update(vpb_sic_state *s)
 {
     uint32_t flags;
@@ -146,7 +158,6 @@ static int vpb_sic_init(SysBusDevice *dev)
                                        vpb_sic_writefn, s,
                                        DEVICE_NATIVE_ENDIAN);
     sysbus_init_mmio(dev, 0x1000, iomemtype);
-    /* ??? Save/restore.  */
     return 0;
 }
 
@@ -335,10 +346,17 @@ static void versatile_machine_init(void)
 
 machine_init(versatile_machine_init);
 
+static SysBusDeviceInfo vpb_sic_info = {
+    .init = vpb_sic_init,
+    .qdev.name = "versatilepb_sic",
+    .qdev.size = sizeof(vpb_sic_state),
+    .qdev.vmsd = &vmstate_vpb_sic,
+    .qdev.no_user = 1,
+};
+
 static void versatilepb_register_devices(void)
 {
-    sysbus_register_dev("versatilepb_sic", sizeof(vpb_sic_state),
-                        vpb_sic_init);
+    sysbus_register_withprop(&vpb_sic_info);
 }
 
 device_init(versatilepb_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 3/8] arm_sysctl: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 1/8] pl190: Implement save/restore Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 2/8] vpb_sic: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 4/8] pl050: " Peter Maydell
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/arm_sysctl.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/hw/arm_sysctl.c b/hw/arm_sysctl.c
index bd0664f..d8b062c 100644
--- a/hw/arm_sysctl.c
+++ b/hw/arm_sysctl.c
@@ -28,6 +28,22 @@ typedef struct {
     uint32_t proc_id;
 } arm_sysctl_state;
 
+static const VMStateDescription vmstate_arm_sysctl = {
+    .name = "realview_sysctl",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(leds, arm_sysctl_state),
+        VMSTATE_UINT16(lockval, arm_sysctl_state),
+        VMSTATE_UINT32(cfgdata1, arm_sysctl_state),
+        VMSTATE_UINT32(cfgdata2, arm_sysctl_state),
+        VMSTATE_UINT32(flags, arm_sysctl_state),
+        VMSTATE_UINT32(nvflags, arm_sysctl_state),
+        VMSTATE_UINT32(resetlevel, arm_sysctl_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static void arm_sysctl_reset(DeviceState *d)
 {
     arm_sysctl_state *s = FROM_SYSBUS(arm_sysctl_state, sysbus_from_qdev(d));
@@ -231,6 +247,7 @@ static SysBusDeviceInfo arm_sysctl_info = {
     .init = arm_sysctl_init1,
     .qdev.name  = "realview_sysctl",
     .qdev.size  = sizeof(arm_sysctl_state),
+    .qdev.vmsd = &vmstate_arm_sysctl,
     .qdev.reset = arm_sysctl_reset,
     .qdev.props = (Property[]) {
         DEFINE_PROP_UINT32("sys_id", arm_sysctl_state, sys_id, 0),
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 4/8] pl050: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (2 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 3/8] arm_sysctl: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 5/8] pl031: " Peter Maydell
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/pl050.c |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/hw/pl050.c b/hw/pl050.c
index 0573839..b155cc0 100644
--- a/hw/pl050.c
+++ b/hw/pl050.c
@@ -21,6 +21,20 @@ typedef struct {
     int is_mouse;
 } pl050_state;
 
+static const VMStateDescription vmstate_pl050 = {
+    .name = "pl050",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(cr, pl050_state),
+        VMSTATE_UINT32(clk, pl050_state),
+        VMSTATE_UINT32(last, pl050_state),
+        VMSTATE_INT32(pending, pl050_state),
+        VMSTATE_INT32(is_mouse, pl050_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 #define PL050_TXEMPTY         (1 << 6)
 #define PL050_TXBUSY          (1 << 5)
 #define PL050_RXFULL          (1 << 4)
@@ -137,7 +151,6 @@ static int pl050_init(SysBusDevice *dev, int is_mouse)
         s->dev = ps2_mouse_init(pl050_update, s);
     else
         s->dev = ps2_kbd_init(pl050_update, s);
-    /* ??? Save/restore.  */
     return 0;
 }
 
@@ -151,12 +164,24 @@ static int pl050_init_mouse(SysBusDevice *dev)
     return pl050_init(dev, 1);
 }
 
+static SysBusDeviceInfo pl050_kbd_info = {
+    .init = pl050_init_keyboard,
+    .qdev.name  = "pl050_keyboard",
+    .qdev.size  = sizeof(pl050_state),
+    .qdev.vmsd = &vmstate_pl050,
+};
+
+static SysBusDeviceInfo pl050_mouse_info = {
+    .init = pl050_init_mouse,
+    .qdev.name  = "pl050_mouse",
+    .qdev.size  = sizeof(pl050_state),
+    .qdev.vmsd = &vmstate_pl050,
+};
+
 static void pl050_register_devices(void)
 {
-    sysbus_register_dev("pl050_keyboard", sizeof(pl050_state),
-                        pl050_init_keyboard);
-    sysbus_register_dev("pl050_mouse", sizeof(pl050_state),
-                        pl050_init_mouse);
+    sysbus_register_withprop(&pl050_kbd_info);
+    sysbus_register_withprop(&pl050_mouse_info);
 }
 
 device_init(pl050_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 5/8] pl031: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (3 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 4/8] pl050: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 6/8] pl110: " Peter Maydell
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/pl031.c |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/hw/pl031.c b/hw/pl031.c
index e3700c1..c488f69 100644
--- a/hw/pl031.c
+++ b/hw/pl031.c
@@ -44,6 +44,21 @@ typedef struct {
     uint32_t is;
 } pl031_state;
 
+static const VMStateDescription vmstate_pl031 = {
+    .name = "pl031",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(tick_offset, pl031_state),
+        VMSTATE_UINT32(mr, pl031_state),
+        VMSTATE_UINT32(lr, pl031_state),
+        VMSTATE_UINT32(cr, pl031_state),
+        VMSTATE_UINT32(im, pl031_state),
+        VMSTATE_UINT32(is, pl031_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static const unsigned char pl031_id[] = {
     0x31, 0x10, 0x14, 0x00,         /* Device ID        */
     0x0d, 0xf0, 0x05, 0xb1          /* Cell ID      */
@@ -206,9 +221,17 @@ static int pl031_init(SysBusDevice *dev)
     return 0;
 }
 
+static SysBusDeviceInfo pl031_info = {
+    .init = pl031_init,
+    .qdev.name = "pl031",
+    .qdev.size = sizeof(pl031_state),
+    .qdev.vmsd = &vmstate_pl031,
+    .qdev.no_user = 1,
+};
+
 static void pl031_register_devices(void)
 {
-    sysbus_register_dev("pl031", sizeof(pl031_state), pl031_init);
+    sysbus_register_withprop(&pl031_info);
 }
 
 device_init(pl031_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 6/8] pl110: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (4 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 5/8] pl031: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 7/8] pl080: " Peter Maydell
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/pl110.c |   44 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/hw/pl110.c b/hw/pl110.c
index a4adb63..06d2dfa 100644
--- a/hw/pl110.c
+++ b/hw/pl110.c
@@ -48,6 +48,28 @@ typedef struct {
     qemu_irq irq;
 } pl110_state;
 
+static const VMStateDescription vmstate_pl110 = {
+    .name = "pl110",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_INT32(versatile, pl110_state),
+        VMSTATE_UINT32_ARRAY(timing, pl110_state, 4),
+        VMSTATE_UINT32(cr, pl110_state),
+        VMSTATE_UINT32(upbase, pl110_state),
+        VMSTATE_UINT32(lpbase, pl110_state),
+        VMSTATE_UINT32(int_status, pl110_state),
+        VMSTATE_UINT32(int_mask, pl110_state),
+        VMSTATE_INT32(cols, pl110_state),
+        VMSTATE_INT32(rows, pl110_state),
+        VMSTATE_UINT32(bpp, pl110_state),
+        VMSTATE_INT32(invalidate, pl110_state),
+        VMSTATE_UINT32_ARRAY(pallette, pl110_state, 256),
+        VMSTATE_UINT32_ARRAY(raw_pallette, pl110_state, 128),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static const unsigned char pl110_id[] =
 { 0x10, 0x11, 0x04, 0x00, 0x0d, 0xf0, 0x05, 0xb1 };
 
@@ -365,7 +387,6 @@ static int pl110_init(SysBusDevice *dev)
     s->ds = graphic_console_init(pl110_update_display,
                                  pl110_invalidate_display,
                                  NULL, NULL, s);
-    /* ??? Save/restore.  */
     return 0;
 }
 
@@ -376,11 +397,26 @@ static int pl110_versatile_init(SysBusDevice *dev)
     return pl110_init(dev);
 }
 
+static SysBusDeviceInfo pl110_info = {
+    .init = pl110_init,
+    .qdev.name = "pl110",
+    .qdev.size = sizeof(pl110_state),
+    .qdev.vmsd = &vmstate_pl110,
+    .qdev.no_user = 1,
+};
+
+static SysBusDeviceInfo pl110_versatile_info = {
+    .init = pl110_versatile_init,
+    .qdev.name = "pl110_versatile",
+    .qdev.size = sizeof(pl110_state),
+    .qdev.vmsd = &vmstate_pl110,
+    .qdev.no_user = 1,
+};
+
 static void pl110_register_devices(void)
 {
-    sysbus_register_dev("pl110", sizeof(pl110_state), pl110_init);
-    sysbus_register_dev("pl110_versatile", sizeof(pl110_state),
-                        pl110_versatile_init);
+    sysbus_register_withprop(&pl110_info);
+    sysbus_register_withprop(&pl110_versatile_info);
 }
 
 device_init(pl110_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 7/8] pl080: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (5 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 6/8] pl110: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 8/8] stc91c111: " Peter Maydell
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/pl080.c |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/hw/pl080.c b/hw/pl080.c
index 1a3e06c..901f04a 100644
--- a/hw/pl080.c
+++ b/hw/pl080.c
@@ -52,6 +52,43 @@ typedef struct {
     qemu_irq irq;
 } pl080_state;
 
+static const VMStateDescription vmstate_pl080_channel = {
+    .name = "pl080_channel",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(src, pl080_channel),
+        VMSTATE_UINT32(dest, pl080_channel),
+        VMSTATE_UINT32(lli, pl080_channel),
+        VMSTATE_UINT32(ctrl, pl080_channel),
+        VMSTATE_UINT32(conf, pl080_channel),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static const VMStateDescription vmstate_pl080 = {
+    .name = "pl080",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT8(tc_int, pl080_state),
+        VMSTATE_UINT8(tc_mask, pl080_state),
+        VMSTATE_UINT8(err_int, pl080_state),
+        VMSTATE_UINT8(err_mask, pl080_state),
+        VMSTATE_UINT32(conf, pl080_state),
+        VMSTATE_UINT32(sync, pl080_state),
+        VMSTATE_UINT32(req_single, pl080_state),
+        VMSTATE_UINT32(req_burst, pl080_state),
+        VMSTATE_UINT8(tc_int, pl080_state),
+        VMSTATE_UINT8(tc_int, pl080_state),
+        VMSTATE_UINT8(tc_int, pl080_state),
+        VMSTATE_STRUCT_ARRAY(chan, pl080_state, PL080_MAX_CHANNELS,
+                             1, vmstate_pl080_channel, pl080_channel),
+        VMSTATE_INT32(running, pl080_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static const unsigned char pl080_id[] =
 { 0x80, 0x10, 0x04, 0x0a, 0x0d, 0xf0, 0x05, 0xb1 };
 
@@ -330,7 +367,6 @@ static int pl08x_init(SysBusDevice *dev, int nchannels)
     sysbus_init_mmio(dev, 0x1000, iomemtype);
     sysbus_init_irq(dev, &s->irq);
     s->nchannels = nchannels;
-    /* ??? Save/restore.  */
     return 0;
 }
 
@@ -344,12 +380,28 @@ static int pl081_init(SysBusDevice *dev)
     return pl08x_init(dev, 2);
 }
 
+static SysBusDeviceInfo pl080_info = {
+    .init = pl080_init,
+    .qdev.name = "pl080",
+    .qdev.size = sizeof(pl080_state),
+    .qdev.vmsd = &vmstate_pl080,
+    .qdev.no_user = 1,
+};
+
+static SysBusDeviceInfo pl081_info = {
+    .init = pl081_init,
+    .qdev.name = "pl081",
+    .qdev.size = sizeof(pl080_state),
+    .qdev.vmsd = &vmstate_pl080,
+    .qdev.no_user = 1,
+};
+
 /* The PL080 and PL081 are the same except for the number of channels
    they implement (8 and 2 respectively).  */
 static void pl080_register_devices(void)
 {
-    sysbus_register_dev("pl080", sizeof(pl080_state), pl080_init);
-    sysbus_register_dev("pl081", sizeof(pl080_state), pl081_init);
+    sysbus_register_withprop(&pl080_info);
+    sysbus_register_withprop(&pl081_info);
 }
 
 device_init(pl080_register_devices)
-- 
1.6.3.3

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

* [Qemu-devel] [PATCH 8/8] stc91c111: Implement save/restore
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (6 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 7/8] pl080: " Peter Maydell
@ 2010-12-23 17:19 ` Peter Maydell
  2011-01-12 12:33 ` [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
  2011-01-20 11:44 ` Aurelien Jarno
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2010-12-23 17:19 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/smc91c111.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/hw/smc91c111.c b/hw/smc91c111.c
index fc714d7..dafea5c 100644
--- a/hw/smc91c111.c
+++ b/hw/smc91c111.c
@@ -46,6 +46,35 @@ typedef struct {
     int mmio_index;
 } smc91c111_state;
 
+static const VMStateDescription vmstate_smc91c111 = {
+    .name = "smc91c111",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields      = (VMStateField []) {
+        VMSTATE_UINT16(tcr, smc91c111_state),
+        VMSTATE_UINT16(rcr, smc91c111_state),
+        VMSTATE_UINT16(cr, smc91c111_state),
+        VMSTATE_UINT16(ctr, smc91c111_state),
+        VMSTATE_UINT16(gpr, smc91c111_state),
+        VMSTATE_UINT16(ptr, smc91c111_state),
+        VMSTATE_UINT16(ercv, smc91c111_state),
+        VMSTATE_INT32(bank, smc91c111_state),
+        VMSTATE_INT32(packet_num, smc91c111_state),
+        VMSTATE_INT32(tx_alloc, smc91c111_state),
+        VMSTATE_INT32(allocated, smc91c111_state),
+        VMSTATE_INT32(tx_fifo_len, smc91c111_state),
+        VMSTATE_INT32_ARRAY(tx_fifo, smc91c111_state, NUM_PACKETS),
+        VMSTATE_INT32(rx_fifo_len, smc91c111_state),
+        VMSTATE_INT32_ARRAY(rx_fifo, smc91c111_state, NUM_PACKETS),
+        VMSTATE_INT32(tx_fifo_done_len, smc91c111_state),
+        VMSTATE_INT32_ARRAY(tx_fifo_done, smc91c111_state, NUM_PACKETS),
+        VMSTATE_BUFFER_UNSAFE(data, smc91c111_state, 0, NUM_PACKETS * 2048),
+        VMSTATE_UINT8(int_level, smc91c111_state),
+        VMSTATE_UINT8(int_mask, smc91c111_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 #define RCR_SOFT_RST  0x8000
 #define RCR_STRIP_CRC 0x0200
 #define RCR_RXEN      0x0100
@@ -738,6 +767,7 @@ static SysBusDeviceInfo smc91c111_info = {
     .init = smc91c111_init1,
     .qdev.name  = "smc91c111",
     .qdev.size  = sizeof(smc91c111_state),
+    .qdev.vmsd = &vmstate_smc91c111,
     .qdev.props = (Property[]) {
         DEFINE_NIC_PROPERTIES(smc91c111_state, conf),
         DEFINE_PROP_END_OF_LIST(),
-- 
1.6.3.3

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

* Re: [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (7 preceding siblings ...)
  2010-12-23 17:19 ` [Qemu-devel] [PATCH 8/8] stc91c111: " Peter Maydell
@ 2011-01-12 12:33 ` Peter Maydell
  2011-01-20 11:44 ` Aurelien Jarno
  9 siblings, 0 replies; 11+ messages in thread
From: Peter Maydell @ 2011-01-12 12:33 UTC (permalink / raw)
  To: qemu-devel

On 23 December 2010 11:19, Peter Maydell <peter.maydell@linaro.org> wrote:
> This patchset adds save/restore support to the devices used by the ARM
> versatilepb board which didn't already support it.
>
> I did this in line with docs/migration.txt, and it seems to work OK. I'd
> appreciate some review from somebody with a better grasp of the APIs,
> though :-) In particular, am I saving the uint8_t data[NUM_PACKETS][2048]
> array in stc91c111 in the right way?

Ping? As I said, I was hoping for some review on this one...

("stc91c111" here and in the commit comment for patch 8 should be
"smc91c111", obviously.)

thanks
-- PMM

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

* Re: [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices
  2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
                   ` (8 preceding siblings ...)
  2011-01-12 12:33 ` [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
@ 2011-01-20 11:44 ` Aurelien Jarno
  9 siblings, 0 replies; 11+ messages in thread
From: Aurelien Jarno @ 2011-01-20 11:44 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel

On Thu, Dec 23, 2010 at 05:19:50PM +0000, Peter Maydell wrote:
> This patchset adds save/restore support to the devices used by the ARM
> versatilepb board which didn't already support it.
> 
> I did this in line with docs/migration.txt, and it seems to work OK. I'd
> appreciate some review from somebody with a better grasp of the APIs,
> though :-) In particular, am I saving the uint8_t data[NUM_PACKETS][2048]
> array in stc91c111 in the right way?
> 
> Peter Maydell (8):
>   pl190: Implement save/restore
>   vpb_sic: Implement save/restore
>   arm_sysctl: Implement save/restore
>   pl050: Implement save/restore
>   pl031: Implement save/restore
>   pl110: Implement save/restore
>   pl080: Implement save/restore
>   stc91c111: Implement save/restore
> 
>  hw/arm_sysctl.c  |   17 +++++++++++++++
>  hw/pl031.c       |   25 ++++++++++++++++++++++-
>  hw/pl050.c       |   35 +++++++++++++++++++++++++++----
>  hw/pl080.c       |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++--
>  hw/pl110.c       |   44 +++++++++++++++++++++++++++++++++++++---
>  hw/pl190.c       |   36 +++++++++++++++++++++++++++++---
>  hw/smc91c111.c   |   30 +++++++++++++++++++++++++++
>  hw/versatilepb.c |   24 +++++++++++++++++++--
>  8 files changed, 249 insertions(+), 20 deletions(-)
> 

I don't really know this part of QEMU, but given nobody really wants to
review these patches and given they look ok, I have applied them. It's 
better than leaving them bitrotting on the mailing list.

-- 
Aurelien Jarno	                        GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

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

end of thread, other threads:[~2011-01-20 11:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-23 17:19 [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 1/8] pl190: Implement save/restore Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 2/8] vpb_sic: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 3/8] arm_sysctl: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 4/8] pl050: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 5/8] pl031: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 6/8] pl110: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 7/8] pl080: " Peter Maydell
2010-12-23 17:19 ` [Qemu-devel] [PATCH 8/8] stc91c111: " Peter Maydell
2011-01-12 12:33 ` [Qemu-devel] [PATCH 0/8] Add save/restore support to ARM versatilepb devices Peter Maydell
2011-01-20 11:44 ` Aurelien Jarno

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