qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC v2 00/12] Virtio-mmio refactoring.


From: Evgeny Voevodin
Subject: [Qemu-devel] [RFC v2 00/12] Virtio-mmio refactoring.
Date: Mon, 17 Sep 2012 14:00:30 +0400

Previous RFC you can find at 
http://lists.gnu.org/archive/html/qemu-devel/2012-04/msg03665.html
Yes, long time ago...
Since I'm not sure when I'll be able to continue on this,
I'm publishing this work as is.
In this patchset I tried to split virtio-xxx-pci devices into 
virtio-pci + virtio-xxx (blk, net, serial,...). Also virtio-mmio
transport is introduced based on Peter's work which is accessible 
here: http://lists.gnu.org/archive/html/qemu-devel/2011-11/msg01870.html

The main idea was to let users specify
-device virtio-pci,id=virtio-pci.0
-device virtio-blk,transport=virtio-pci.0,...
 
and

-device virtio-mmio,id=virtio-mmio.0
-device virtio-blk,transport=virtio-mmio.0,...

I created virtio-pci and virtio-mmio transport devices and tried to enclose
back-end functionality into virtio-blk, virtio-net, etc. On
initialization of transport device it creates a bus to which a back-end device
could be connected. Each back-end device is implemented in corresponding source
file. As for PCI transport, I temporary placed it in a new virtio-pci-new.c file
to not break a functionality of still presented virtio-xxx-pci devices.

Known issues to be resolved:
1. On creation of back-end we need to resolve somehow if props were explicitly 
set
by user.
2. Back-end device can't be initialized if there are no free bus created by 
transport,
so you can't specify
-device virtio-blk,transport=virtio-pci.0,...
-device virtio-pci,id=virtio-pci.0
3. Implement virtio-xxx-devices such that they just create virtio-pci and 
virtio-xxx
devices during initialization.
4. Refactor all remaining back-ends since I just tried blk, net, serial and 
balloon.
5. Refactor s390
6. Further?

Evgeny Voevodin (9):
  Virtio: Add transport bindings.
  hw/qdev-properties.c: Add "transport" property.
  hw/pci.c: Make pci_add_option_rom global visible
  hw/virtio-serial-bus.c: Add virtio-serial device.
  hw/virtio-balloon.c: Add virtio-balloon device.
  hw/virtio-net.c: Add virtio-net device.
  hw/virtio-blk.c: Add virtio-blk device.
  hw/virtio-pci-new.c: Add VirtIOPCI device.
  hw/exynos4210.c: Create two virtio-mmio transport instances.

Peter Maydell (3):
  virtio: Add support for guest setting of queue size
  virtio: Support transports which can specify the vring alignment
  Add MMIO based virtio transport

 hw/Makefile.objs       |    3 +
 hw/exynos4210.c        |   13 +
 hw/pci.c               |    3 +-
 hw/pci.h               |    2 +
 hw/qdev-properties.c   |   29 ++
 hw/qdev.h              |    3 +
 hw/virtio-balloon.c    |   42 +++
 hw/virtio-balloon.h    |    9 +
 hw/virtio-blk.c        |   65 ++++
 hw/virtio-blk.h        |   15 +
 hw/virtio-mmio.c       |  400 +++++++++++++++++++++
 hw/virtio-net.c        |   59 +++
 hw/virtio-net.h        |   16 +
 hw/virtio-pci-new.c    |  925 ++++++++++++++++++++++++++++++++++++++++++++++++
 hw/virtio-pci.h        |   18 +
 hw/virtio-serial-bus.c |   44 +++
 hw/virtio-serial.h     |   11 +
 hw/virtio-transport.c  |  147 ++++++++
 hw/virtio-transport.h  |   74 ++++
 hw/virtio.c            |   20 +-
 hw/virtio.h            |    2 +
 21 files changed, 1896 insertions(+), 4 deletions(-)
 create mode 100644 hw/virtio-mmio.c
 create mode 100644 hw/virtio-pci-new.c
 create mode 100644 hw/virtio-transport.c
 create mode 100644 hw/virtio-transport.h

-- 
1.7.9.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]