qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Fix migration (take 2)
@ 2009-11-11 23:39 Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 1/3] fdc: fix vmstate variable passed Juan Quintela
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Juan Quintela @ 2009-11-11 23:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: blauwirbel, jan.kiszka, glommer, aliguori

Hi

With this three patches (on top of the one already in staging)
I am able to get migration working with today qemu/master.

- fdc: vmstate+reset qdev change made to use an vmstate that expected
  an fdctrl_t variable and received a fdctrl_isabus_t variable.  You can guess
  what happened.
- qemu_system_reset: moved from main_loop() to before loadvm/incoming migration.
  We can't reset "after" having loaded state, otherwise we lost the state that
  we have just loaded.
- pci: pcie changes moved config for one array to one pointer.  put method was
  not updated to deal with it.

With this I have migration working.

ToDo for tomorrow:
- check rest of vmstate+reset conversions.
- rtl8139 and e1000 still don't work with migration.  The networking changes
  broke them, but I haven't yet found which one.

Juan Quintela (3):
  fdc: fix vmstate variable passed
  qemu_system_reset: we need to call it before loadvm/migration
  pci: fix the conversion of config field from array to pointer

 hw/fdc.c |   33 +++++++++++++++++++++++++++++----
 hw/pci.c |    4 ++--
 vl.c     |    2 +-
 3 files changed, 32 insertions(+), 7 deletions(-)

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

* [Qemu-devel] [PATCH 1/3] fdc: fix vmstate variable passed
  2009-11-11 23:39 [Qemu-devel] [PATCH 0/3] Fix migration (take 2) Juan Quintela
@ 2009-11-11 23:39 ` Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 3/3] pci: fix the conversion of config field from array to pointer Juan Quintela
  2 siblings, 0 replies; 5+ messages in thread
From: Juan Quintela @ 2009-11-11 23:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: blauwirbel, jan.kiszka, glommer, aliguori

When code was transformed to use qdev_reset/vmstate registration, vmstate
was passed a variable of the wrong type

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 hw/fdc.c |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/hw/fdc.c b/hw/fdc.c
index d2bfa71..e875291 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -661,7 +661,7 @@ static int fdc_post_load(void *opaque, int version_id)
 }

 static const VMStateDescription vmstate_fdc = {
-    .name = "fdc",
+    .name = "fdctrl",
     .version_id = 2,
     .minimum_version_id = 2,
     .minimum_version_id_old = 2,
@@ -699,6 +699,31 @@ static const VMStateDescription vmstate_fdc = {
     }
 };

+static const VMStateDescription vmstate_fdc_isa = {
+    .name = "fdc",
+    .version_id = 2,
+    .minimum_version_id = 2,
+    .minimum_version_id_old = 2,
+    .fields      = (VMStateField []) {
+        /* Controller State */
+        VMSTATE_STRUCT(state, fdctrl_isabus_t, 0, vmstate_fdc, fdctrl_t),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static const VMStateDescription vmstate_fdc_sysbus = {
+    .name = "fdc",
+    .version_id = 2,
+    .minimum_version_id = 2,
+    .minimum_version_id_old = 2,
+    .fields      = (VMStateField []) {
+        /* Controller State */
+        VMSTATE_STRUCT(state, fdctrl_sysbus_t, 0, vmstate_fdc, fdctrl_t),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+
 static void fdctrl_external_reset_sysbus(DeviceState *d)
 {
     fdctrl_sysbus_t *sys = container_of(d, fdctrl_sysbus_t, busdev.qdev);
@@ -1998,7 +2023,7 @@ static ISADeviceInfo isa_fdc_info = {
     .qdev.name  = "isa-fdc",
     .qdev.size  = sizeof(fdctrl_isabus_t),
     .qdev.no_user = 1,
-    .qdev.vmsd  = &vmstate_fdc,
+    .qdev.vmsd  = &vmstate_fdc_isa,
     .qdev.reset = fdctrl_external_reset_isa,
     .qdev.props = (Property[]) {
         DEFINE_PROP_DRIVE("driveA", fdctrl_isabus_t, state.drives[0].dinfo),
@@ -2011,7 +2036,7 @@ static SysBusDeviceInfo sysbus_fdc_info = {
     .init = sysbus_fdc_init1,
     .qdev.name  = "sysbus-fdc",
     .qdev.size  = sizeof(fdctrl_sysbus_t),
-    .qdev.vmsd  = &vmstate_fdc,
+    .qdev.vmsd  = &vmstate_fdc_sysbus,
     .qdev.reset = fdctrl_external_reset_sysbus,
     .qdev.props = (Property[]) {
         DEFINE_PROP_DRIVE("driveA", fdctrl_sysbus_t, state.drives[0].dinfo),
@@ -2024,7 +2049,7 @@ static SysBusDeviceInfo sun4m_fdc_info = {
     .init = sun4m_fdc_init1,
     .qdev.name  = "SUNW,fdtwo",
     .qdev.size  = sizeof(fdctrl_sysbus_t),
-    .qdev.vmsd  = &vmstate_fdc,
+    .qdev.vmsd  = &vmstate_fdc_sysbus,
     .qdev.reset = fdctrl_external_reset_sysbus,
     .qdev.props = (Property[]) {
         DEFINE_PROP_DRIVE("drive", fdctrl_sysbus_t, state.drives[0].dinfo),
-- 
1.6.2.5

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

* [Qemu-devel] [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration
  2009-11-11 23:39 [Qemu-devel] [PATCH 0/3] Fix migration (take 2) Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 1/3] fdc: fix vmstate variable passed Juan Quintela
@ 2009-11-11 23:39 ` Juan Quintela
  2009-11-12 10:30   ` [Qemu-devel] " Glauber Costa
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 3/3] pci: fix the conversion of config field from array to pointer Juan Quintela
  2 siblings, 1 reply; 5+ messages in thread
From: Juan Quintela @ 2009-11-11 23:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: blauwirbel, jan.kiszka, glommer, aliguori


Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 vl.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/vl.c b/vl.c
index bf91ee1..fff8e8d 100644
--- a/vl.c
+++ b/vl.c
@@ -4044,7 +4044,6 @@ static void main_loop(void)
     qemu_system_ready = 1;
     qemu_cond_broadcast(&qemu_system_cond);
 #endif
-    qemu_system_reset();

     for (;;) {
         do {
@@ -5835,6 +5834,7 @@ int main(int argc, char **argv, char **envp)

     rom_load_all();

+    qemu_system_reset();
     if (loadvm) {
         if (load_vmstate(cur_mon, loadvm) < 0) {
             autostart = 0;
-- 
1.6.2.5

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

* [Qemu-devel] [PATCH 3/3] pci: fix the conversion of config field from array to pointer
  2009-11-11 23:39 [Qemu-devel] [PATCH 0/3] Fix migration (take 2) Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 1/3] fdc: fix vmstate variable passed Juan Quintela
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration Juan Quintela
@ 2009-11-11 23:39 ` Juan Quintela
  2 siblings, 0 replies; 5+ messages in thread
From: Juan Quintela @ 2009-11-11 23:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: blauwirbel, jan.kiszka, glommer, aliguori


Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 hw/pci.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/pci.c b/hw/pci.c
index 2ab1117..a326930 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -273,9 +273,9 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
 /* just put buffer */
 static void put_pci_config_device(QEMUFile *f, void *pv, size_t size)
 {
-    const uint8_t *v = pv;
+    const uint8_t **v = pv;
     assert(size == pci_config_size(container_of(pv, PCIDevice, config)));
-    qemu_put_buffer(f, v, size);
+    qemu_put_buffer(f, *v, size);
 }

 static VMStateInfo vmstate_info_pci_config = {
-- 
1.6.2.5

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

* [Qemu-devel] Re: [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration
  2009-11-11 23:39 ` [Qemu-devel] [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration Juan Quintela
@ 2009-11-12 10:30   ` Glauber Costa
  0 siblings, 0 replies; 5+ messages in thread
From: Glauber Costa @ 2009-11-12 10:30 UTC (permalink / raw)
  To: Juan Quintela; +Cc: blauwirbel, jan.kiszka, aliguori, qemu-devel

On Thu, Nov 12, 2009 at 12:39:13AM +0100, Juan Quintela wrote:
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>  vl.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/vl.c b/vl.c
> index bf91ee1..fff8e8d 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4044,7 +4044,6 @@ static void main_loop(void)
>      qemu_system_ready = 1;
>      qemu_cond_broadcast(&qemu_system_cond);
>  #endif
> -    qemu_system_reset();
> 
>      for (;;) {
>          do {
> @@ -5835,6 +5834,7 @@ int main(int argc, char **argv, char **envp)
> 
>      rom_load_all();
> 
> +    qemu_system_reset();
>      if (loadvm) {
>          if (load_vmstate(cur_mon, loadvm) < 0) {
>              autostart = 0;
> -- 
> 1.6.2.5
that seems fine.

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

end of thread, other threads:[~2009-11-12 10:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-11 23:39 [Qemu-devel] [PATCH 0/3] Fix migration (take 2) Juan Quintela
2009-11-11 23:39 ` [Qemu-devel] [PATCH 1/3] fdc: fix vmstate variable passed Juan Quintela
2009-11-11 23:39 ` [Qemu-devel] [PATCH 2/3] qemu_system_reset: we need to call it before loadvm/migration Juan Quintela
2009-11-12 10:30   ` [Qemu-devel] " Glauber Costa
2009-11-11 23:39 ` [Qemu-devel] [PATCH 3/3] pci: fix the conversion of config field from array to pointer Juan Quintela

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