24 Nov, 2011

1 commit


02 Nov, 2011

1 commit

  • This patch, based on virtio PCI driver, adds support for memory
    mapped (platform) virtio device. This should allow environments
    like qemu to use virtio-based block & network devices even on
    platforms without PCI support.

    One can define and register a platform device which resources
    will describe memory mapped control registers and "mailbox"
    interrupt. Such device can be also instantiated using the Device
    Tree node with compatible property equal "virtio,mmio".

    Cc: Anthony Liguori
    Cc: Michael S.Tsirkin
    Signed-off-by: Pawel Moll
    Signed-off-by: Rusty Russell

    Pawel Moll
     

23 Jul, 2011

1 commit

  • virtio has been so far used only in the context of virtualization,
    and the virtio Kconfig was sourced directly by the relevant arch
    Kconfigs when VIRTUALIZATION was selected.

    Now that we start using virtio for inter-processor communications,
    we need to source the virtio Kconfig outside of the virtualization
    scope too.

    Moreover, some architectures might use virtio for both virtualization
    and inter-processor communications, so directly sourcing virtio
    might yield unexpected results due to conflicting selections.

    The simple solution offered by this patch is to always source virtio's
    Kconfig in drivers/Kconfig, and remove it from the appropriate arch
    Kconfigs. Additionally, a virtio menu entry has been added so virtio
    drivers don't show up in the general drivers menu.

    This way anyone can use virtio, though it's arguably less accessible
    (and neat!) for virtualization users now.

    Note: some architectures (mips and sh) seem to have a VIRTUALIZATION
    menu merely for sourcing virtio's Kconfig, so that menu is removed too.

    Signed-off-by: Ohad Ben-Cohen
    Signed-off-by: Rusty Russell

    Ohad Ben-Cohen
     

04 Feb, 2008

3 commits

  • After discussions with Anthony Liguori, it seems that the virtio
    balloon can be made even simpler. Here's my attempt.

    The device configuration tells the driver how much memory it should
    take from the guest (ie. balloon size). The guest feeds the page
    numbers it has taken via one virtqueue.

    A second virtqueue feeds the page numbers the driver wants back: if
    the device has the VIRTIO_BALLOON_F_MUST_TELL_HOST bit, then this
    queue is compulsory, otherwise it's advisory (and the guest can simply
    fault the pages back in).

    This driver can be enhanced later to deflate the balloon via a
    shrinker, oom callback or we could even go for a complete set of
    in-guest regulators.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • This is a PCI device that implements a transport for virtio. It allows virtio
    devices to be used by QEMU based VMMs like KVM or Xen.

    Signed-off-by: Anthony Liguori
    Signed-off-by: Rusty Russell

    Anthony Liguori
     
  • This is needed for the virtio PCI device to be compiled as a module.

    Signed-off-by: Anthony Liguori
    Signed-off-by: Rusty Russell

    Rusty Russell
     

23 Oct, 2007

2 commits

  • These helper routines supply most of the virtqueue_ops for hypervisors
    which want to use a ring for virtio. Unlike the previous lguest
    implementation:

    1) The rings are variable sized (2^n-1 elements).
    2) They have an unfortunate limit of 65535 bytes per sg element.
    3) The page numbers are always 64 bit (PAE anyone?)
    4) They no longer place used[] on a separate page, just a separate
    cacheline.
    5) We do a modulo on a variable. We could be tricky if we cared.
    6) Interrupts and notifies are suppressed using flags within the rings.

    Users need only get the ring pages and provide a notify hook (KVM
    wants the guest to allocate the rings, lguest does it sanely).

    Signed-off-by: Rusty Russell
    Cc: Dor Laor

    Rusty Russell
     
  • This attempts to implement a "virtual I/O" layer which should allow
    common drivers to be efficiently used across most virtual I/O
    mechanisms. It will no-doubt need further enhancement.

    The virtio drivers add buffers to virtio queues; as the buffers are consumed
    the driver "interrupt" callbacks are invoked.

    There is also a generic implementation of config space which drivers can query
    to get setup information from the host.

    Signed-off-by: Rusty Russell
    Cc: Dor Laor
    Cc: Arnd Bergmann

    Rusty Russell