(Adding Ard, just in case -- the topic is set by the first quoted
question below)

On 02/08/21 04:24, Ying Fang wrote:
> Hi, Does anybody know whether the EDK2 ArmVirtPkg has support for a 
> virtio-mmio-device ?

virtio-mmio is a virtio transport type, not a particular device.

(1) ArmVirtPkg + OvmfPkg support the following three virtio transports:

(1a) Virtio PCI, virtio spec version 0.9.5,
     [OvmfPkg/VirtioPciDeviceDxe]

(1b) Virtio PCI, virtio spec version 1.0,
     [OvmfPkg/Virtio10Dxe]

(1c) Virtio MMIO, virtio spec version 0.9.5 *only*
     [ArmVirtPkg/VirtioFdtDxe]
     [OvmfPkg/Library/VirtioMmioDeviceLib]

(2) Additionally, OvmfPkg offers the following virtio device drivers:

- VirtioBlkDxe
- VirtioFsDxe   [1.0 only]
- VirtioGpuDxe  [1.0 only]
- VirtioNetDxe
- VirtioRngDxe
- VirtioScsiDxe

(2a) The drivers marked "1.0 only" will only work on top of the
transport mentioned in point (1b).

Put differently, they will only drive the following virtio-1.0 QEMU
device models:

- VirtioFsDxe:  "vhost-user-fs-pci"
- VirtioGpuDxe: "virtio-gpu-pci"

(2b) The drivers *not* marked "1.0 only" will work on top of *either*
virtio transport that's noted in (1a), (1b), (1c).

This implies that, using the ArmVirtQemu firmware platform, you can use
the following QEMU device models *too*:

- VirtioBlkDxe:  "virtio-blk-device"
- VirtioNetDxe:  "virtio-net-device"
- VirtioRngDxe:  "virtio-rng-device"
- VirtioScsiDxe: "virtio-scsi-device"


> I am using EDK2 ArmVirtPkg v2.70 as the default UEFI for my devel program.

A commit hash would be more useful (not sure if it matters for now, but
in case it does, a commit hash is best).


> Since we have not implemented the PCI/PCIe suff, a virtio-mmio-blk device is 
> used as the image disk.

There is no such device model ("virtio-mmio-blk") in QEMU, as far as I
can tell.

Do you mean "virtio-blk-device"?


> We can boot the EDK2 ArmVirtPkg into UEFI shell, and the Mapping table 
> message shows
> 
> Mapping table:
>         BLK0: Alias(s):
>               VenHw(xxx, 00)

Do you have an EFI system partition on the virtio block device?

Because, the "map" UEFI shell command (executed automatically at shell
startup) should list such a filesystem as "FS0:" here.


> However when I chose the “Boot From File” menu item, I can not see the 
> virtio-mmio-blk device.

That's not surprising, minimally because the MAP command above does not
list "FS0:".


> So does anybody know whether the EDK2 ArmVirtPkg has support for a 
> virtio-mmio-device ?

The virtio-blk-device is supported, yes, using the virtio-mmio (0.9.5)
transport type. But in order to actually boot from the device, you need
more things. Such as:

- an EFI system partition / FAT filesystem on the device,

- bootable UEFI binaries (matching the guest architecture),

- a correctly populated "bootorder" fw_cfg file, so that the UEFI boot
order be updated as well. This "bootorder" fw_cfg file is created by
QEMU upon use of the "bootindex" device properties, and it is acted upon
by the following components:

  ArmVirtPkg/Library/PlatformBootManagerLib
  OvmfPkg/Library/QemuBootOrderLib

Thanks
Laszlo



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#71464): https://edk2.groups.io/g/devel/message/71464
Mute This Topic: https://groups.io/mt/80471199/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to