I'm not 100% sure but I think the problem is we've got two devices with the same qdev path/name and we aren't expecting that when they're children of another device; here's some debug on the aarch64 version:
I think the problem is the names of the virtio-scsi devices - on pci I'd expect to have a PCI bus name for the name of the virtio interface, so that they're pci slot/scsi id; on x86 it won't let me instantiate a virtio-scsi-device - because I don't have a virtio bus, so I have to ask for a virtio-scsi-pci device and then I end up with unique names like:
I'm not 100% sure but I think the problem is we've got two devices with the same qdev path/name and we aren't expecting that when they're children of another device; here's some debug on the aarch64 version:
(qemu) vmstate_ register_ with_alias_ id: vmsd=cpu_common register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=cpu register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=pflash_cfi01 register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=pflash_cfi01 register_ with_alias_ id: se->compat=(nil) instance_id=1 register_ with_alias_ id: vmsd=arm_gic register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=pl011 register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=pl031 register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=gpex_root register_ with_alias_ id: dev/id case: 0000:00:00.0 register_ with_alias_ id: se->compat= 0x55d911656fa0 instance_id=0 register_ with_alias_ id: vmsd=PCIBUS register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=pl061 register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=gpio-key register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=fw_cfg register_ with_alias_ id: se->compat=(nil) instance_id=0 register_ with_alias_ id: vmsd=scsi-disk register_ with_alias_ id: dev/id case: 0:0:0 register_ with_alias_ id: se->compat= 0x55d912077020 instance_id=0 register_ with_alias_ id: vmsd=scsi-disk register_ with_alias_ id: dev/id case: 0:0:0 register_ with_alias_ id: se->compat= 0x55d912078c90 instance_id=1 aarch64: /home/dgilbert/ git/qemu/ migration/ savevm. c:624: vmstate_ register_ with_alias_ id: Assertion `!se->compat || se->instance_id == 0' failed.
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
qemu-system-
I think the problem is the names of the virtio-scsi devices - on pci I'd expect to have a PCI bus name for the name of the virtio interface, so that they're pci slot/scsi id; on x86 it won't let me instantiate a virtio-scsi-device - because I don't have a virtio bus, so I have to ask for a virtio-scsi-pci device and then I end up with unique names like:
vmstate_ register_ with_alias_ id: dev/id case: 0000:00:01.3 register_ with_alias_ id: se->compat= 0x564cdb891a60 instance_id=0 register_ with_alias_ id: vmsd=scsi-disk register_ with_alias_ id: dev/id case: 0000:00:02.0/0:0:0 register_ with_alias_ id: se->compat= 0x564cdb95ec30 instance_id=0 register_ with_alias_ id: vmsd=scsi-disk register_ with_alias_ id: dev/id case: 0000:00:03.0/0:0:0
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
vmstate_
going back to aarch64 and doing an info qtree we have:
dev: virtio-mmio, id "" 0/0000000000000 200 0/0000000000000 200 0/0000000000000 200 0/0000000000000 200 0/0000000000000 200
gpio-out "sysbus-irq" 1
mmio 000000000a00080
bus: virtio-mmio-bus.4
type virtio-mmio-bus
dev: virtio-mmio, id ""
gpio-out "sysbus-irq" 1
mmio 000000000a00060
bus: virtio-mmio-bus.3
type virtio-mmio-bus
dev: virtio-mmio, id ""
gpio-out "sysbus-irq" 1
mmio 000000000a00040
bus: virtio-mmio-bus.2
type virtio-mmio-bus
dev: virtio-mmio, id ""
gpio-out "sysbus-irq" 1
mmio 000000000a00020
bus: virtio-mmio-bus.1
type virtio-mmio-bus
dev: virtio-mmio, id ""
gpio-out "sysbus-irq" 1
mmio 000000000a00000
bus: virtio-mmio-bus.0
type virtio-mmio-bus
Dave