Any idea why it fails? And how to fix it?
Lack of "proper" subsections. IDE is something like:
const VMStateDescription vmstate_ide_drive = {
.version_id = 4,
....
}
static const VMStateDescription vmstate_bmdma = {
.name = "ide bmdma",
.version_id = 4,
...
}
const VMStateDescription vmstate_ide_pci = {
.name = "ide",
.version_id = 4,
....
VMSTATE_STRUCT_ARRAY(bmdma, PCIIDEState, 2, 0,
vmstate_bmdma, BMDMAState),
VMSTATE_IDE_DRIVES(bus[0].ifs, PCIIDEState),
VMSTATE_IDE_DRIVES(bus[1].ifs, PCIIDEState),
....
}
Notice that everything is at version 4. It used to be everything at
version 3. Now the problem is that when migrating from v3 -> v4. We
put in one place v3, But we only have a version number at the toplevel,
rest of "subsections" don't sent a version number. There is no way to
fix it in the general case. We can hack something around for ide, but
that will just be a hack, or we can backport marcelo change and port it
as a proper subsection (that is my plan). I expect to have time at the
end of next time to work on this.