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