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