On 17/12/14 11:23, Peter Maydell wrote: > On 17 December 2014 at 11:11, Alexander Graf <ag...@suse.de> wrote: >> Phew - 0.7.0 maybe? If you say that only CUDA is broken, I don't think >> it'd be too hard to fix :). Check that there are VMSTATEs for everything >> and maybe retrigger interrupts after migration. > > It shouldn't be necessary to retrigger anything post-migration: > the devices on both ends should both believe the interrupt is > asserted once they've loaded their state. > > Given how long it's been since this was known-working, it's > probably easiest just to compare the VMState structs against > the device structs for every device that might be vaguely > relevant, looking for missing fields.
Trying to figure out why my CUDA breakpoints weren't being hit, it turns out that the problem is even more fundamental than this. Check out the output of "info mtree" before and after a "loadvm" command: BEFORE: (qemu) info mtree memory 0000000000000000-ffffffffffffffff (prio 0, RW): system 0000000000000000-0000000007ffffff (prio 0, RW): ppc_heathrow.ram 0000000080000000-00000000fdffffff (prio 0, RW): alias pci-hole @pci-mmio 0000000080000000-00000000fdffffff 00000000f0000510-00000000f0000511 (prio 0, RW): fwcfg.ctl 00000000f0000512-00000000f0000512 (prio 0, RW): fwcfg.data 00000000fe000000-00000000fe1fffff (prio 0, RW): alias isa_mmio @io 0000000000000000-00000000001fffff 00000000fec00000-00000000fec00fff (prio 0, RW): pci-conf-idx 00000000fee00000-00000000fee00fff (prio 0, RW): pci-data-idx 00000000fff00000-00000000ffffffff (prio 0, R-): ppc_heathrow.bios I/O 0000000000000000-000000000000ffff (prio 0, RW): io 00000000000001ce-00000000000001ce (prio 0, RW): vbe 00000000000001d0-00000000000001d0 (prio 0, RW): vbe 00000000000003b4-00000000000003b5 (prio 0, RW): vga 00000000000003ba-00000000000003ba (prio 0, RW): vga 00000000000003c0-00000000000003cf (prio 0, RW): vga 00000000000003d4-00000000000003d5 (prio 0, RW): vga 00000000000003da-00000000000003da (prio 0, RW): vga 0000000000000400-00000000000004ff (prio 1, RW): ne2000 grackle VGA ne2k_pci macio-oldworld aliases pci-mmio 0000000000000000-00000000ffffffff (prio 0, RW): pci-mmio 00000000000a0000-00000000000affff (prio 2, RW): alias vga.chain4 @vga.vram 0000000000000000-000000000000ffff 00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem 0000000080000000-0000000080ffffff (prio 1, RW): vga.vram 0000000081000000-0000000081000fff (prio 1, RW): vga.mmio 0000000081000400-000000008100041f (prio 0, RW): vga ioports remapped 0000000081000500-0000000081000515 (prio 0, RW): bochs dispi interface 0000000081000600-0000000081000607 (prio 0, RW): qemu extended regs 0000000081010000-000000008101ffff (prio 1, RW): vga.rom 0000000081040000-000000008107ffff (prio 1, RW): ne2000.rom 0000000081080000-00000000810fffff (prio 1, RW): macio 0000000081080000-0000000081080fff (prio 0, RW): heathrow-pic 0000000081088000-0000000081088fff (prio 0, RW): dbdma 0000000081092000-00000000810920ff (prio 0, RW): escc-legacy 0000000081092000-0000000081092001 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000000-0000000000000001 0000000081092002-0000000081092003 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000020-0000000000000021 0000000081092004-0000000081092005 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000010-0000000000000011 0000000081092006-0000000081092007 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000030-0000000000000031 0000000081092008-0000000081092009 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000040-0000000000000041 000000008109200a-000000008109200b (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000050-0000000000000051 0000000081092060-0000000081092061 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000060-0000000000000061 0000000081092070-0000000081092071 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000070-0000000000000071 0000000081092080-0000000081092081 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000070-0000000000000071 0000000081092090-0000000081092091 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000080-0000000000000081 00000000810920a0-00000000810920a1 (prio 0, RW): alias escc-legacy-port @escc-bar 0000000000000090-0000000000000091 00000000810920b0-00000000810920b1 (prio 0, RW): alias escc-legacy-port @escc-bar 00000000000000a0-00000000000000a1 00000000810920c0-00000000810920c1 (prio 0, RW): alias escc-legacy-port @escc-bar 00000000000000b0-00000000000000b1 00000000810920d0-00000000810920d1 (prio 0, RW): alias escc-legacy-port @escc-bar 00000000000000c0-00000000000000c1 00000000810920e0-00000000810920e1 (prio 0, RW): alias escc-legacy-port @escc-bar 00000000000000d0-00000000000000d1 00000000810920f0-00000000810920f1 (prio 0, RW): alias escc-legacy-port @escc-bar 00000000000000e0-00000000000000e1 0000000081093000-000000008109303f (prio 0, RW): alias escc-bar @escc 0000000000000000-000000000000003f 0000000081096000-0000000081097fff (prio 0, RW): cuda 00000000810a0000-00000000810a0fff (prio 0, RW): pmac-ide 00000000810a1000-00000000810a1fff (prio 0, RW): pmac-ide 00000000810e0000-00000000810fffff (prio 0, RW): macio-nvram io 0000000000000000-000000000000ffff (prio 0, RW): io 00000000000001ce-00000000000001ce (prio 0, RW): vbe 00000000000001d0-00000000000001d0 (prio 0, RW): vbe 00000000000003b4-00000000000003b5 (prio 0, RW): vga 00000000000003ba-00000000000003ba (prio 0, RW): vga 00000000000003c0-00000000000003cf (prio 0, RW): vga 00000000000003d4-00000000000003d5 (prio 0, RW): vga 00000000000003da-00000000000003da (prio 0, RW): vga 0000000000000400-00000000000004ff (prio 1, RW): ne2000 vga.vram 0000000080000000-0000000080ffffff (prio 1, RW): vga.vram escc-bar 0000000000013000-000000000001303f (prio 0, RW): alias escc-bar @escc 0000000000000000-000000000000003f escc 0000000000000000-000000000000003f (prio 0, RW): escc AFTER: (qemu) info mtree memory 0000000000000000-ffffffffffffffff (prio 0, RW): system 0000000000000000-0000000007ffffff (prio 0, RW): ppc_heathrow.ram 0000000080000000-00000000fdffffff (prio 0, RW): alias pci-hole @pci-mmio 0000000080000000-00000000fdffffff 00000000f0000510-00000000f0000511 (prio 0, RW): fwcfg.ctl 00000000f0000512-00000000f0000512 (prio 0, RW): fwcfg.data 00000000fe000000-00000000fe1fffff (prio 0, RW): alias isa_mmio @io 0000000000000000-00000000001fffff 00000000fec00000-00000000fec00fff (prio 0, RW): pci-conf-idx 00000000fee00000-00000000fee00fff (prio 0, RW): pci-data-idx 00000000fff00000-00000000ffffffff (prio 0, R-): ppc_heathrow.bios I/O 0000000000000000-000000000000ffff (prio 0, RW): io 00000000000001ce-00000000000001ce (prio 0, RW): vbe 00000000000001d0-00000000000001d0 (prio 0, RW): vbe 00000000000003b4-00000000000003b5 (prio 0, RW): vga 00000000000003ba-00000000000003ba (prio 0, RW): vga 00000000000003c0-00000000000003cf (prio 0, RW): vga 00000000000003d4-00000000000003d5 (prio 0, RW): vga 00000000000003da-00000000000003da (prio 0, RW): vga 0000000000000400-00000000000004ff (prio 1, RW): ne2000 grackle VGA ne2k_pci macio-oldworld aliases pci-mmio 0000000000000000-00000000ffffffff (prio 0, RW): pci-mmio 00000000000a0000-00000000000bffff (prio 1, RW): vga-lowmem 0000000080000000-0000000080ffffff (prio 1, RW): vga.vram 0000000081000000-0000000081000fff (prio 1, RW): vga.mmio 0000000081000400-000000008100041f (prio 0, RW): vga ioports remapped 0000000081000500-0000000081000515 (prio 0, RW): bochs dispi interface 0000000081000600-0000000081000607 (prio 0, RW): qemu extended regs 0000000081010000-000000008101ffff (prio 1, RW): vga.rom 0000000081040000-000000008107ffff (prio 1, RW): ne2000.rom io 0000000000000000-000000000000ffff (prio 0, RW): io 00000000000001ce-00000000000001ce (prio 0, RW): vbe 00000000000001d0-00000000000001d0 (prio 0, RW): vbe 00000000000003b4-00000000000003b5 (prio 0, RW): vga 00000000000003ba-00000000000003ba (prio 0, RW): vga 00000000000003c0-00000000000003cf (prio 0, RW): vga 00000000000003d4-00000000000003d5 (prio 0, RW): vga 00000000000003da-00000000000003da (prio 0, RW): vga 0000000000000400-00000000000004ff (prio 1, RW): ne2000 So it looks like several of the device MemoryRegions aren't being added after the "loadvm". Does this mean there is an object lifecycle issue here in that some of the initialisation needs to be done in realizefn rather than initfn or vice-versa? ATB, Mark.