On Tue, Jan 10, 2023 at 12:52:32PM +0100, David Hildenbrand wrote:
> The following seems to work,
That looks much better at least from the diffstat pov (comparing to the
existing patch 1+5 and the framework changes), thanks.
> but makes analyze-migration.py angry:
>
> $ ./scripts/analyze-migration.py -f STATEFILE
> Traceback (most recent call last):
> File "/home/dhildenb/git/qemu/./scripts/analyze-migration.py", line 605, in
> <module>
> dump.read(dump_memory = args.memory)
> File "/home/dhildenb/git/qemu/./scripts/analyze-migration.py", line 539, in
> read
> classdesc = self.section_classes[section_key]
> ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
> KeyError: ('0000:00:03.0/virtio-mem-early', 0)
>
>
> We need the vmdesc to create info for the device.
Migration may ignore the save entry if save_state() not provided in the
"devices" section:
if ((!se->ops || !se->ops->save_state) && !se->vmsd) {
continue;
}
Could you try providing a shim save_state() for the new virtio-mem save
entry?
/*
* Shim function to make sure the save entry will be dumped into "devices"
* section, to make analyze-migration.py happy.
*/
static void virtio_mem_save_state_early(QEMUFile *file, void *opaque)
{
}
Then:
static const SaveVMHandlers vmstate_virtio_mem_device_early_ops = {
.save_setup = virtio_mem_save_setup_early,
.save_state = virtio_mem_save_state_early,
.load_state = virtio_mem_load_state_early,
};
I'm not 100% sure it'll work yet, but maybe worth trying.
Thanks,
--
Peter Xu