15 Nov, 2018

9 commits

  • This driver provides support for Sandbox implementation of virtio
    transport driver which is used for testing purpose only.

    Two drivers are provided. The 2nd one is a driver that lacks the
    'notify' op.

    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng
     
  • For v1.0 compliant device, it always assumes the member 'num_buffers'
    exists in the struct virtio_net_hdr while the legacy driver only
    presented 'num_buffers' when VIRTIO_NET_F_MRG_RXBUF was negotiated.
    Without that feature the structure was 2 bytes shorter.

    Update the driver to support the non-legacy device.

    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng
     
  • By default QEMU creates legacy PCI transport devices, but we can
    ask QEMU to create non-legacy one if we pass additional device
    property/value pairs in the command line:

    -device virtio-blk-pci,disable-legacy=true,disable-modern=false

    This adds a new driver driver to support non-legacy (modern) device
    mode. Previous driver/file name is changed accordingly.

    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng
     
  • This adds a transport driver that implements UCLASS_VIRTIO for
    virtio over pci, which is commonly used on x86.

    It only supports the legacy interface of the pci transport, which
    is the default device that QEMU emulates.

    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng
     
  • This adds virtio block device driver support.

    Signed-off-by: Tuomas Tynkkynen
    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Tuomas Tynkkynen
     
  • This adds virtio net device driver support.

    Signed-off-by: Tuomas Tynkkynen
    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Tuomas Tynkkynen
     
  • VirtIO can use various different buses and virtio devices are
    commonly implemented as PCI devices. But virtual environments
    without PCI support (a common situation in embedded devices
    models) might use simple memory mapped device (“virtio-mmio”)
    instead of the PCI device.

    This adds a transport driver that implements UCLASS_VIRTIO for
    virtio over mmio.

    Signed-off-by: Tuomas Tynkkynen
    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng
     
  • This adds support for managing virtual queue/ring, the channel
    for high performance I/O between host and guest.

    Signed-off-by: Tuomas Tynkkynen
    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Tuomas Tynkkynen
     
  • This adds a new virtio uclass driver for “virtio” [1] family of
    devices that are are found in virtual environments like QEMU,
    yet by design they look like physical devices to the guest.

    The uclass driver provides child_pre_probe() and child_post_probe()
    methods to do some common operations for virtio device drivers like
    device and driver supported feature negotiation, etc.

    [1] http://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v1.0.pdf

    Signed-off-by: Tuomas Tynkkynen
    Signed-off-by: Bin Meng
    Reviewed-by: Simon Glass

    Bin Meng