Changelog from v3:
------------------
- Fixed 'write size' in VIRTIO_DEVICE_WRITE comment
- Made all the functions of the protocol return EFI_STATUS
- Removed 'VIRTIO_GET_GUEST_FEATURES GetGuestFeatures'
- Added a note about the fact VIRTIO_SET_QUEUE_ALIGN is a NOP
- Fixed VIRTIO_GET_DEVICE_STATUS comment
- Added a 'Revision' attribute to the protocol
- Added a longer commit message to VirtioPciDeviceDxe patch
- Clean comment in VirtioPciDeviceDxe
- Empty the scope of VirtioPciUninit() to mirror VirtioPciInit()
- Updated the comment of VIRTIO_SET_QUEUE_ADDRESS/VIRTIO_GET_QUEUE_ADDRESS
with the required division by 4096
- Added VIRTIO_DEVICE_PROTOCOL.SetPageSize() protocol member
- Removed VirtioWriteDevice() and VirtioReadDevice() from VirtioLib.
Limitation:
-----------
- The ARM Foundation Model does not return a valid Vendor ID. As a
consequence, the MMIO Virtio driver cannot return an error if the
Vendor ID does not match the VirtIo Vendor ID.
Not implemented:
----------------
- [Laszlo] A VIRTIO_GET_QUEUE_SEL member / typedef could have been
appropriate for PCI, but I agree that virtio-mmio allows write-only
here.
- [Laszlo] A VIRTIO_GET_QUEUE_NOTIFY member / typedef could have been
appropriate for PCI, but I agree that virtio-mmio allows write-only
here.
- Did not make the change 'VIRTIO_CFG_WRITE (Device,
VIRTIO_MMIO_OFFSET_QUEUE_PFN, 0);'
that fixes the VirtIo support in Linux
- Did not implement VirtioPciGetDeviceName()
Not changed:
------------
- Endianness: All the architectures supported by the UEFI spec
are in 'little endian' mode.
- Keep the PCI 64bit read/write break down into two 32bit accesses:
The VirtiIo BlockIo driver makes (at least) one non 8-byte aligned
access when trying to access the 'VIRTIO_BLK_CONFIG.Capacity' attribute.
VIRTIO_BLK_CONFIG.Capacity is a 64bit field at the offset 0x0 of the
device specific region. This region starts at the offset 20 (0x14) of
the I/O region when there is no MSI-X capability.
Olivier Martin (11):
OvmfPkg/Virtio.h: Added the macros that define the Device Specific
Configuration Offset
OvmfPkg/Virtio.h: Added PCI/MMIO Virtio Headers Offsets
OvmfPkg/Virtio.h: Added the Virtio Vendor and MMIO IDs
OvmfPkg/VirtioDevice.h: Introduced VIRTIO_DEVICE_PROTOCOL protocol
OvmfPkg/VirtioPciDeviceDxe: Implement VIRTIO_DEVICE_PROTOCOL for
VirtIo Devices over PCI
OvmfPkg/VirtioMmioDeviceLib: Implement VIRTIO_DEVICE_PROTOCOL for
VirtIo Devices over MMIO
OvmfPkg: Make the VirtIo devices use the new VIRTIO_DEVICE_PROTOCOL
OvmfPkg/Virtio.h: Removed definition of VIRTIO_HDR
ArmPlatformPkg/ArmVExpressPkg: Added the empty 'ArmFvpDxe' platform
UEFI driver
ArmPlatformPkg/ArmFvpDxe: Added Virtio Block support
OvmfPkg/Virtio: Removed VirtioReadDevice() / VirtIoWriteDevice()
functions
.../ArmVExpressPkg/ArmFvpDxe/ArmFvpDxe.c | 73 +++
.../ArmVExpressPkg/ArmFvpDxe/ArmFvpDxe.inf | 35 +
.../ArmVExpress-RTSM-AEMv8Ax4-foundation.dsc | 10 +
.../ArmVExpress-RTSM-AEMv8Ax4-foundation.fdf | 6 +
.../ArmVExpressPkg/ArmVExpress-RTSM-AEMv8Ax4.dsc | 10 +
.../ArmVExpressPkg/ArmVExpress-RTSM-AEMv8Ax4.fdf | 8 +-
OvmfPkg/Include/IndustryStandard/Virtio.h | 67 ++-
OvmfPkg/Include/IndustryStandard/VirtioBlk.h | 21 +-
OvmfPkg/Include/IndustryStandard/VirtioNet.h | 14 +-
OvmfPkg/Include/IndustryStandard/VirtioScsi.h | 27 +-
OvmfPkg/Include/Library/VirtioLib.h | 77 +--
OvmfPkg/Include/Library/VirtioMmioDeviceLib.h | 65 ++
OvmfPkg/Include/Protocol/VirtioDevice.h | 376 +++++++++++
OvmfPkg/Library/VirtioLib/VirtioLib.c | 158 +-----
.../Library/VirtioMmioDeviceLib/VirtioMmioDevice.c | 204 ++++++
.../Library/VirtioMmioDeviceLib/VirtioMmioDevice.h | 147 +++++
.../VirtioMmioDeviceFunctions.c | 304 +++++++++
.../VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf | 43 ++
OvmfPkg/OvmfPkg.dec | 1 +
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.c | 185 +++----
OvmfPkg/VirtioBlkDxe/VirtioBlk.h | 32 +-
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | 4 +-
OvmfPkg/VirtioNetDxe/ComponentName.c | 6 +-
OvmfPkg/VirtioNetDxe/DriverBinding.c | 130 ++---
OvmfPkg/VirtioNetDxe/Events.c | 2 +-
OvmfPkg/VirtioNetDxe/SnpGetStatus.c | 2 +-
OvmfPkg/VirtioNetDxe/SnpInitialize.c | 37 +-
OvmfPkg/VirtioNetDxe/SnpReceive.c | 12 +-
OvmfPkg/VirtioNetDxe/SnpShutdown.c | 2 +-
OvmfPkg/VirtioNetDxe/SnpTransmit.c | 12 +-
OvmfPkg/VirtioNetDxe/VirtioNet.h | 26 +-
OvmfPkg/VirtioNetDxe/VirtioNet.inf | 2 +-
OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c | 667 ++++++++++++++++++++
OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h | 166 +++++
OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf | 43 ++
OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c | 285 +++++++++
OvmfPkg/VirtioScsiDxe/VirtioScsi.c | 173 ++----
OvmfPkg/VirtioScsiDxe/VirtioScsi.h | 24 +-
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | 2 +-
45 files changed, 2814 insertions(+), 650 deletions(-)
create mode 100644 ArmPlatformPkg/ArmVExpressPkg/ArmFvpDxe/ArmFvpDxe.c
create mode 100644 ArmPlatformPkg/ArmVExpressPkg/ArmFvpDxe/ArmFvpDxe.inf
create mode 100644 OvmfPkg/Include/Library/VirtioMmioDeviceLib.h
create mode 100644 OvmfPkg/Include/Protocol/VirtioDevice.h
create mode 100644 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.c
create mode 100644 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDevice.h
create mode 100644
OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c
create mode 100644 OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
create mode 100644 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.c
create mode 100644 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDevice.h
create mode 100644 OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
create mode 100644 OvmfPkg/VirtioPciDeviceDxe/VirtioPciFunctions.c
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel