On Sun, Dec 20, 2009 at 08:58:40AM -0600, Anthony Liguori wrote:
> Gleb Natapov wrote:
> >On Sun, Dec 20, 2009 at 08:43:38AM -0600, Anthony Liguori wrote:
> >>Gleb Natapov wrote:
> >>>On Fri, Dec 18, 2009 at 12:01:06PM +0100, Gerd Hoffmann wrote:
> >>>>From: Anthony Liguori <aligu...@us.ibm.com>
> >>>>
> >>>> Hi,
> >>>>
> >>>>Option rom saga continued.  This is the first series I consider ready
> >>>>for merging.  Changes:
> >>>>
> >>>> * pci roms: will be loaded via option pci rom bar.
> >>>> * non-pci roms: will be loaded via fw_cfg.
> >>>>
> >>>>Note that using the old bochs-bios based pc-bios will stop working
> >>>>with this patch series applied.
> >>>>
> >>>>The last two patches of this series are *not* intended to be merged,
> >>>>they are just for testing convinience.  They carry a new seabios
> >>>>binary and the changes needed and turn on bios debug messages in qemu.
> >>>>
> >>>>Seabios patches will be posted shortly as separate patch series.
> >>>>
> >>>I see that this is merged already, but I have a question. How migration
> >>>during ROM loading suppose to work?
> >>Magically :-)
> >>
> >>Really, we have a fundamentally problem with live migration (that's
> >>orthogonal to this series).  We allocate memory via qemu_ram_alloc()
> >>but we don't have any context to that allocation.  When we migrate
> >>memory, we do so by transferring ram basically in allocation order.
> >>
> >>If for some reason allocation order changes, badness ensues.  The
> >>problem is, a lot of devices use qemu_ram_alloc() now and they do so
> >>when they are initialized so the stability of the allocation depends
> >>on the initialization order.  It's exacerbated by things like PCI
> >>hotplug.
> >>
> >>We need to make a change in the live migration protocol that
> >>transfers memory identified with tuples (id, chunk offset).  We'll
> >>need to change every qemu_ram_alloc() to take an id argument too.
> >>
> >>>What will happed if we migrate to newer
> >>>qemu with updated vgabios ROM while BIOS is in the middle of loading it on 
> >>>the
> >>>source? It seems that destination will have garbled ROM loaded.
> >>During device init, pci device allocates memory, loads rom into
> >>allocated memory.  Upon live migration, allocated memory gets over
> >>written by rom contents from source.  So in this case, it will
> >>actually work today (assuming you get stable ram allocation
> >>offsets).
> >>
> >That much I noticed :), but first after reboot new ROMs should take effect.
> >Does this happed?
> 
> No.  You have to physically shut down and start up again.  That's
> the right semantics IMHO.
> 
Reset is equivalent (or should be) to shut down and start up again.

> > Second what if ROM size have changed (on destination it is
> >smaller)?
> 
> Then we're in trouble :-)
> 
Yeah, we are. May be relaying on file size is not good enough heuristic
to determine ROM BAR size.

> > And third what about roms that are loaded with fw_cfg interface (me
> >mentioning vgabios was not accident :))
> 
> vgabios will be loaded as a PCI rom.  -std vga still uses fw_cfg but
> that's a really easy fix.
I mean -std vga and other "genroms" (multiboot, linuxboot, vapic). 

> 
> But the fw_cfg rom loading doesn't seem handle migration :-/
> 
Looks like it. We should send them over during migration too.

--
                        Gleb.


Reply via email to