[SeaBIOS] [Qemu-devel] insmod virtio-blk is broken in qemu 1.0

Anthony Liguori anthony at codemonkey.ws
Sat Dec 17 17:24:07 CET 2011

On 12/17/2011 09:25 AM, Richard W.M. Jones wrote:
> On Sat, Dec 17, 2011 at 09:22:45AM -0600, Anthony Liguori wrote:
>> I've even further narrowed it down to the presents or lack of '-vga
>> cirrus'.  If you add '-vga cirrus' to the above command line, the
>> guest will boot successfully.
> Confirmed: Adding -vga cirrus to the command line cures it too.
> That's a strange one :-)

vga sticks out a bit because it's one of the few places where we treat device 
memory as ram as a performance optimization.

The only time vga has been touched in between v0.15 and v1.0 was during the 
introduction of the memory API.

It's this commit:

commit d67c3f2cd92aed2247bfa8a9da61a902b7b2ff09
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Wed Aug 10 17:34:13 2011 +0200

     seabios: update to master

     commit 8e301472e324b6d6496d8b4ffc66863e99d7a505

     user visible changes in seabios:
       * ahci is enabled by default (and thus in this build).
       * bootorder support for ahci.
       * two-pass pci allocator (orders bars by size for better packing).

     Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

:040000 040000 76eb0c81b76563b55cb2bb5c484ccd48b8cfcded 
5ec0d65d3a763a5566fe1f4c86269cad6d671020 M	pc-bios
:040000 040000 a5a7ea6e297c1e7490b0a2c28a06ce56e5be9449 
78adb664d3ea82f1a4dd5ec239887ac5b0168a7f M	roms

It can be reproduced by using virtio and -vga none with a number of PCI devices. 
  The line below is what I used to bisect and reproduce 100% of the time.  It's 
a 64-bit Fedora 15 guest.

$ qemu-system-x86_64 -drive 
file=/home/anthony/images/fedora.img,if=none,snapshot=on,id=hd0 -device 
virtio-balloon-pci,addr=03.0 -device virtio-blk-pci,addr=04.0,drive=hd0 -kernel 
~/vmlinuz- -initrd 
~/initramfs- -append 
"root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root 
rd_LVM_LV=VolGroup/lv_swap ro console=ttyS0 selinux=0" -nographic -nodefconfig 
-m 1G -no-reboot -no-hpet -device virtio-serial -chardev 
socket,path=/tmp/foo.sock,id=channel0,server,nowait -device 
virtserialport,chardev=channel0,name=org.libguestfs.channel.0 -nodefaults 
-serial stdio -enable-kvm

My guess it that it has something to do with the changes to the PCI allocator. 
I've confirmed reverting this commit fixes the problem.


Anthony Liguori

> Rich.

More information about the SeaBIOS mailing list