Hi this patch series run on top of my previous vmstate cleanups and fixes. It ports virtio* and msix at the same time (msix and virtio-pci are too entangled to do it separately). It contains:
- Use DO_UPCAST instead of local function for doing the casts - virtio: add a type field (pci and syborg by now). - strange pci bindings for virtio are gone (i.e. config and queues are handled explicitely for pci, the ones that used them). - virtio-net: make vlans to use uint8_t instead of uint32_t array, that makes it work through big_endian/low endian migrations. This needs testing from people that use the feature. - virtio-blk: It has no hope for migration between 32/64bits hosts or big-endian/little-endian. It sends a structure with memcpy that contains: - target_phys_addr_t (32 or 64 bits depending on host/guest) - void * (again it depends on host) - size_t (it depends on host again) I didn't changed it, but we should. - virtio-blk: change the list of requests to QLIST. I also needed a QLIST_COPY_HEAD to not have to break the abstraction, created it. Later, Juan. Juan Quintela (40): virtio: Teach virtio-balloon about DO_UPCAST virtio: Teach virtio-blk about DO_UPCAST virtio: Teach virtio-console about DO_UPCAST virtio: Teach virtio-net about DO_UPCAST virtio-console: Remove useless casts virtio: Use DO_UPCAST instead of a cast virtio-pci: Remove duplicate test msix: Store sizes that we send/receive msix: port to vmstate virtio: Introduce type field to distingish between PCI and Syborg virtio-pci: port pci config to vmstate msix: msix_load/save are not needed anymore virtio: remove save/load_config for virtio virtio: remove save/load_queue for virtio virtio: Add num_pci_queues field virtio: split virtio_post_load() from virtio_load() virtio: change config_len type to int32_t virtio: use the right types for VirtQueue elements virtio: abstract test for save/load values virtio: port to vmstate virtio-net: change tx_timer_active to uint32_t virtio-net: change mergeable_rx_bufs to uint32_t virtio-net: use type checking version of qemu_put/get-* virtio-net: MAC_TABLE_ENTRIES has never been bigger virtio-net: we know vlans size at compile time, make it static virtio-net: abstract vlans operations virtio-net: make vlan operations on uint8_t, not uint32_t virtio-net: in_use and first_multi only handle unsigned values virtio-net: use save/load type chek functions for has_vent_hdr virtio-net: we know macs size at compile time, make it static virtio-net: split virtio_net_post_load virtio-net: port to vmstate virtio-console: port to vmstate virtio-balloon: port to vmstate virtio-blk: change rq type to VirtIOBlockReq QLIST: Introduce QLIST_COPY_HEAD virtio-blk: use QLIST for the list of requests virtio-blk: add VirtIOBlokReqHead type virtio-blk: port to vmstate virtio: virtio_save/load are not used anymore Michael S. Tsirkin (1): qemu/pci: document msix_entries_nr field hw/hw.h | 10 +++ hw/msix.c | 37 ++++++--- hw/msix.h | 3 +- hw/pci.h | 6 +- hw/syborg_virtio.c | 1 + hw/virtio-balloon.c | 53 +++++--------- hw/virtio-blk.c | 101 +++++++++++++++---------- hw/virtio-console.c | 43 ++++------- hw/virtio-net.c | 207 +++++++++++++++++++++++++-------------------------- hw/virtio-pci.c | 80 ++++++++++--------- hw/virtio.c | 138 ++++++++++++++++++++++------------ hw/virtio.h | 24 ++++-- qemu-queue.h | 4 + 13 files changed, 390 insertions(+), 317 deletions(-)