On Mo, 2013-12-09 at 11:24 +0200, Marcel Apfelbaum wrote:
> On Mon, 2013-12-09 at 08:14 +0100, Gerd Hoffmann wrote:
> > On So, 2013-12-08 at 13:31 +0200, Michael S. Tsirkin wrote:
> > > On Fri, Dec 06, 2013 at 12:24:40PM +0100, Gerd Hoffmann wrote:
> > > > qemu uses "pci" as name for pci bridges in the firmware device path.
> > > > seabios expects "pci-bridge".  Result is that bootorder is broken for
> > > > devices behind pci bridges.
> > > > 
> > > > Some googling suggests that "pci-bridge" is the correct one.  At least
> > > > PPC-based Apple machines are using this.  See question "How do I boot
> > > > from a device attached to a PCI card" here:
> > > >         http://www.netbsd.org/ports/macppc/faq.html
> > > > 
> > > > So lets change qemu to use "pci-bridge" too.
> > > > 
> > > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
> > > 
> > > Sounds good but this needs to be enabled for
> > > new machine types only - otherwise guest will read
> > > corrupted data since bootindex is in FW CFG.
> > 
> > Come on, that is seriously over-engineering.
> Does this change affects migration in any way?

If you live-migrate from a machine without the fix to a machine with the
fix *and* you have bootorder configured for a device behind the pci
bridge then size of the etc/bootorder fw_cfg file will change.

So, in case of the following event sequence ...

  (a) firmware reads fw_fg directory index (with file sizes)
  (b) live migration
  (c) firmware reads etc/bootorder

... the firmware will read the new content with old size, i.e. it will
miss a few bytes or have trailing garbage (or zeros?  Not sure what qemu
emulation does if you read over the end of a fw_cfg files).

Result might be that bootorder isn't applied correctly.  But that is the
case _anyway_ on the machine with the unfixed qemu version.  So making
this machine type dependent buys us nothing but churn for no reason.

cheers,
  Gerd



Reply via email to