The first patch adds the driver. The rest enables QemuBootOrder to
recognize virtio-blk devices.

Tested as follows:

(1) Booted the Fedora 18 Alpha Live CD (XFCE flavor) with OVMF under
    RHEL-6.3 qemu-kvm. The ISO image was accessed as an IDE CD-ROM. The
    target disk was virtio-blk, but in this phase OVMF didn't care about
    it beyond noticing / enumerating it.

(2) Created a 4 GB raw image file with MBR partition table and a single
    VFAT partition, with a few directories inside. This virtual disk was
    attached to the virtual machine (while turned off) with
    virt-manager. At this point 00:05.0 corresponded to the "main"
    image, while 00:07.0 corresponded to this made-up MBR image.

(3) Edited the VM xml with virsh so that the disks would sit on two
    functions of the same PCI device (this was not necessary, I just
    wanted to see if it worked). See the virsh XML fragment below:

    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source 
file='/var/lib/libvirt/images/fw-ovmf.g-f18xfcealpha.e-rhel63.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' 
function='0x1'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/mbr-one-vfat-part.img'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' 
multifunction='on'/>
    </disk>

(4) Booted virtual machine and entered the Boot Options text-ui in OVMF.
    Browsed the directories on "mbr-one-vfat-part.img" (see (2)), then
    made sure "\EFI\fedora\shim.efi" was added as a boot option from the
    main image. (Full device path:
    
PciRoot(0x0)/Pci(0x5,0x1)/HD(1,GPT,32DBD7E0-D59B-4190-8DE3-A95E75483A13,0x800,0x36800)/\EFI\fedora\shim.efi".)

(5) OVMF loaded shim <https://github.com/mjg59/shim/>, which loaded
    grub-2 with the Simple File System Protocol. Grub-2 loaded the OS
    with BlockIo.

Grub-1 does not recognize the UEFI device path in (4) as bootable. I
plan to write a virtio-scsi driver sometime, which should cooperate with
the existent SCSI parts of OVMF, and produce the messaging device path
nodes required by grub-1.

Many thanks to Paolo Bonzini & Jordan Justen.

Laszlo Ersek (4):
  OvmfPkg: introduce virtio-blk driver
  OvmfPkg: QemuBootOrder: whitespace fix
  OvmfPkg: QemuBootOrder: lower the required number of OFW nodes to 2
  OvmfPkg: QemuBootOrder: recognize virtio-blk OFW device paths

 OvmfPkg/VirtioBlkDxe/VirtioBlk.h               |  449 ++++++++
 OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c |   51 +-
 OvmfPkg/VirtioBlkDxe/VirtioBlk.c               | 1427 ++++++++++++++++++++++++
 OvmfPkg/OvmfPkgIa32.dsc                        |    1 +
 OvmfPkg/OvmfPkgIa32.fdf                        |    1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                     |    1 +
 OvmfPkg/OvmfPkgIa32X64.fdf                     |    1 +
 OvmfPkg/OvmfPkgX64.dsc                         |    1 +
 OvmfPkg/OvmfPkgX64.fdf                         |    1 +
 OvmfPkg/VirtioBlkDxe/VirtioBlk.inf             |   42 +
 10 files changed, 1964 insertions(+), 11 deletions(-)
 create mode 100644 OvmfPkg/VirtioBlkDxe/VirtioBlk.h
 create mode 100644 OvmfPkg/VirtioBlkDxe/VirtioBlk.c
 create mode 100644 OvmfPkg/VirtioBlkDxe/VirtioBlk.inf


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to