On Mon, 19 May 2014 19:06:39 +0200 Andreas Färber <afaer...@suse.de> wrote:
> Am 19.05.2014 15:06, schrieb Greg Kurz: > > On Mon, 19 May 2014 10:39:09 +0200 > > Greg Kurz <gk...@linux.vnet.ibm.com> wrote: > >> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > >> index 7fbad29..6578854 100644 > >> --- a/hw/virtio/virtio.c > >> +++ b/hw/virtio/virtio.c > [...] > >> @@ -839,10 +849,39 @@ typedef struct VirtIOSubsection { > >> int version_id; > >> void (*save)(VirtIODevice *vdev, QEMUFile *f); > >> int (*load)(VirtIODevice *vdev, QEMUFile *f); > >> - int (*needed)(VirtIODevice *vdev); > >> + bool (*needed)(VirtIODevice *vdev); > >> } VirtIOSubsection; > >> > >> +static void virtio_save_device_endian(VirtIODevice *vdev, QEMUFile *f) > >> +{ > >> + qemu_put_byte(f, vdev->device_endian); > >> +} > >> + > >> +static int virtio_load_device_endian(VirtIODevice *vdev, QEMUFile *f) > >> +{ > >> + vdev->device_endian = qemu_get_byte(f); > >> + return 0; > >> +} > >> + > >> +static bool virtio_device_endian_needed(VirtIODevice *vdev) > >> +{ > >> + /* No migration is supposed to occur while we are loading state. > >> + */ > >> + assert(vdev->device_endian != VIRTIO_DEVICE_ENDIAN_UNKNOWN); > >> + if (target_words_bigendian()) { > >> + return vdev->device_endian == VIRTIO_DEVICE_ENDIAN_LITTLE; > >> + } else { > >> + return vdev->device_endian == VIRTIO_DEVICE_ENDIAN_BIG; > >> + } > >> +} > >> + > >> static const VirtIOSubsection virtio_subsection[] = { > >> + { .name = "virtio/device_endian", > > > > Can anyone comment the subsection name ? Is there a chance the > > VMState port would come up with the same ? > > > >> + .version_id = 1, > >> + .save = virtio_save_device_endian, > >> + .load = virtio_load_device_endian, > >> + .needed = virtio_device_endian_needed, > >> + }, > >> { .name = NULL } > >> }; > >> > > Different question: With converting VirtIO to VMState in mind, why are > you not using a regular VMStateSubsection and loading/saving that as > part of the old-style load/save functions? Is an API for that missing? > I guess because I haven't tried yet. :) I'll have a closer look at this. > Regards, > Andreas > Thanks. -- Gregory Kurz kurzg...@fr.ibm.com gk...@linux.vnet.ibm.com Software Engineer @ IBM/Meiosys http://www.ibm.com Tel +33 (0)562 165 496 "Anarchy is about taking complete responsibility for yourself." Alan Moore.