This series enables OvmfPkg and ArmVirtPkg to work with non-transitional
VirtIo 1.0 PCI devices. The first 12 patches rework our edk2-only,
private VIRTIO_DEVICE_PROTOCOL (and its two existent implementations),
and adapt the four device drivers we have. (The 1.0 specification is not
fully backwards compatible.) This is done without disturbing the current
(legacy, 0.9.5) functionality.

Patch 13 adds a VIRTIO_DEVICE_PROTOCOL implementation that conforms to
VirtIo 1.0.

Patches 14 and 15 include the new driver in OvmfPkg and ArmVirtPkg.

Public branch: <https://github.com/lersek/edk2/commits/virtio10_v1>.

If you would like to test this series with VirtIo 1.0 devices, patch 13
has some instructions about the QEMU command line. If you also want to
boot Linux guests on them, then you will need a fairly recent (4.2 or
4.3+) guest kernel, *plus* the following (pending) QEMU bugfix:
<http://thread.gmane.org/gmane.comp.emulators.qemu/400142/focus=400161>.

Cc: Ard Biesheuvel <[email protected]>
Cc: Jordan Justen <[email protected]>

Laszlo Ersek (15):
  OvmfPkg: VIRTIO_DEVICE_PROTOCOL: widen the Features bitmap to 64 bits
  OvmfPkg: VIRTIO_DEVICE_PROTOCOL: remove GetQueueAddress() member
  OvmfPkg: VIRTIO_DEVICE_PROTOCOL: pass VRING object to
    SetQueueAddress()
  OvmfPkg: VirtioBlkDxe: don't clear non-negotiable feature bits
  OvmfPkg: VirtioRngDxe: clear all feature bits more explicitly
  OvmfPkg: IndustryStandard: add definitions from the VirtIo 1.0 spec
  OvmfPkg: VirtioLib: add Virtio10WriteFeatures() function
  OvmfPkg: VirtioBlkDxe: adapt feature negotiation to virtio-1.0
  OvmfPkg: VirtioNetDxe: adapt feature negotiation to virtio-1.0
  OvmfPkg: VirtioRngDxe: adapt feature negotiation to virtio-1.0
  OvmfPkg: VirtioScsiDxe: adapt feature negotiation to virtio-1.0
  OvmfPkg: VirtioNetDxe: adapt virtio-net packet header size to
    virtio-1.0
  OvmfPkg: Virtio10Dxe: non-transitional driver for virtio-1.0 PCI
    devices
  OvmfPkg: include Virtio10Dxe
  ArmVirtPkg: include Virtio10Dxe from OvmfPkg

 ArmVirtPkg/ArmVirtQemu.dsc                                      |    1 +
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                |    1 +
 OvmfPkg/OvmfPkgIa32.dsc                                         |    1 +
 OvmfPkg/OvmfPkgIa32X64.dsc                                      |    1 +
 OvmfPkg/OvmfPkgX64.dsc                                          |    1 +
 ArmVirtPkg/ArmVirtQemu.fdf                                      |    1 +
 ArmVirtPkg/ArmVirtQemuKernel.fdf                                |    1 +
 OvmfPkg/OvmfPkgIa32.fdf                                         |    1 +
 OvmfPkg/OvmfPkgIa32X64.fdf                                      |    1 +
 OvmfPkg/OvmfPkgX64.fdf                                          |    1 +
 OvmfPkg/Virtio10Dxe/Virtio10.inf                                |   40 +
 OvmfPkg/Include/IndustryStandard/Virtio10.h                     |   81 ++
 OvmfPkg/Include/IndustryStandard/Virtio10Net.h                  |   31 +
 OvmfPkg/Include/Library/VirtioLib.h                             |   47 +
 OvmfPkg/Include/Protocol/VirtioDevice.h                         |   42 +-
 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h          |   15 +-
 OvmfPkg/Virtio10Dxe/Virtio10.h                                  |   56 ++
 OvmfPkg/VirtioNetDxe/VirtioNet.h                                |    4 +-
 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h                    |   15 +-
 OvmfPkg/Library/VirtioLib/VirtioLib.c                           |   75 ++
 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c          |    1 -
 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c |   37 +-
 OvmfPkg/Virtio10Dxe/Virtio10.c                                  | 1061 
++++++++++++++++++++
 OvmfPkg/VirtioBlkDxe/VirtioBlk.c                                |   33 +-
 OvmfPkg/VirtioNetDxe/DriverBinding.c                            |    2 +-
 OvmfPkg/VirtioNetDxe/SnpInitialize.c                            |   64 +-
 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c                    |    1 -
 OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c                 |   40 +-
 OvmfPkg/VirtioRngDxe/VirtioRng.c                                |   31 +-
 OvmfPkg/VirtioScsiDxe/VirtioScsi.c                              |   32 +-
 30 files changed, 1565 insertions(+), 153 deletions(-)
 create mode 100644 OvmfPkg/Virtio10Dxe/Virtio10.inf
 create mode 100644 OvmfPkg/Include/IndustryStandard/Virtio10.h
 create mode 100644 OvmfPkg/Include/IndustryStandard/Virtio10Net.h
 create mode 100644 OvmfPkg/Virtio10Dxe/Virtio10.h
 create mode 100644 OvmfPkg/Virtio10Dxe/Virtio10.c

-- 
1.8.3.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to