On 06/03/2017 06:25, Jason Wang wrote: > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > The index's in the Vmxnet3Ring were migrated as 32bit ints > yet are declared as size_t's. They appear to be derived > from 32bit values loaded from guest memory, so actually > store them as that. > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > Acked-by: Dmitry Fleytman <dmi...@daynix.com> > Signed-off-by: Jason Wang <jasow...@redhat.com> > --- > hw/net/vmxnet3.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c > index e13a798..224c109 100644 > --- a/hw/net/vmxnet3.c > +++ b/hw/net/vmxnet3.c > @@ -141,17 +141,17 @@ typedef struct VMXNET3Class { > /* Cyclic ring abstraction */ > typedef struct { > hwaddr pa; > - size_t size; > - size_t cell_size; > - size_t next; > + uint32_t size; > + uint32_t cell_size; > + uint32_t next; > uint8_t gen; > } Vmxnet3Ring; > > static inline void vmxnet3_ring_init(PCIDevice *d, > Vmxnet3Ring *ring, > hwaddr pa, > - size_t size, > - size_t cell_size, > + uint32_t size, > + uint32_t cell_size, > bool zero_region) > { > ring->pa = pa; > @@ -166,7 +166,7 @@ static inline void vmxnet3_ring_init(PCIDevice *d, > } > > #define VMXNET3_RING_DUMP(macro, ring_name, ridx, r) > \ > - macro("%s#%d: base %" PRIx64 " size %zu cell_size %zu gen %d next %zu", > \ > + macro("%s#%d: base %" PRIx64 " size %u cell_size %u gen %d next %u", \ > (ring_name), (ridx), > \ > (r)->pa, (r)->size, (r)->cell_size, (r)->gen, (r)->next) > >
David, with '-dump-vmstate' with 2.8 machine type and with v2.8 and master I can see the size of "txq_descr" and "rxq_descr" changes because of "sizeof(Vmxnet3TxqDescr)" and "sizeof(Vmxnet3RxqDescr)". This changes because the size of Vmxnet3Ring has changed with the s/size_t/uint32_t/": { "field": "txq_descr", "version_id": 0, "field_exists": false, "size": 176 }, { "field": "rxq_descr", "version_id": 0, "field_exists": false, "size": 216 }, becomes: { "field": "txq_descr", "version_id": 0, "field_exists": false, "size": 144 }, { "field": "rxq_descr", "version_id": 0, "field_exists": false, "size": 168 }, And if I try a migration, I have: qemu/migration/vmstate.c:112: vmstate_load_state: Assertion `first_elem || !n_elems' failed. Laurent