[Kimchi-devel] [PATCH v8 0/4] Host device passthrough: Summary

Yu Xin Huo huoyuxin at linux.vnet.ibm.com
Mon Jul 28 09:57:57 UTC 2014


I have tried on my redhat workstation, it totally fail on redhat.
Zheng Sheng took a look and can not get an easy fix.

Zheng Sheng, please explain the issues there on redhat.

 From a brief discussion, seems like it needs special handling for redhat,
So team, please discuss the design to see whether we can get rid of some 
distribution specific handling for this feature.

If we do need redhat or other distributions specific handling,
we also need to think about to pull in more people to work on this to 
speed up.

On 7/21/2014 5:36 PM, Zhou Zheng Sheng wrote:
> Hi,
>
> This patch series is to enable Kimchi to assign hos devices directly to
> a VM, thus greately improve VM performance. Currently we support assigning
> PCI device, USB device and SCSI LUN. For example, we can assign an NIC
> to VM to improve guest network throughput, or passthrough a USB camera
> to enable the guest OS to record video.
>
> Host devices form a tree. We can assign most of the devices in the tree
> to VM. By assigning a device, all the devices in its sub-tree are also
> assigned. It might not make sense to assign a USB controller, because
> the host may be using one of the devices connected to the controller.
> Instead, Kimchi just presents the "leaf" devices to assign to guest.
>
> In recent Linux kernel and KVM, it is able to recognize the IOMMU group
> of a PCI device. The "leaf" PCI devices in the same IOMMU group should
> be assigned and dismissed together. The IOMMU group is the actual
> smallest isolation granularity of the PCI devices.
>
> The first patch is to list all host devices information. It's useful on
> its own to show host devices information.
>
> The second patch is to list all eligible host devices to assign, as well
> as the "affected" devices in the same IOMMU group.
>
> The third patch creates a sub-collection "hostdevs" to the VM resource,
> and deals with assigning and dismissing devices.
>
> The fourth patch adds a sub-collection "vm_holders" to the host device
> resource. It's to list all VMs that are holding the device.
>
> I'll update API and unit test once everyone is happy with the interface
> and logic.
>
> v8:
>    Change the URI for listing affected passthrough devices, suggested by
>    Aline. Move hostdev.py to src/kimchi/model.py. Still discussing API
>    with the front-end developer. Once the API accepted, The author should
>    add tests for model and mockmodel, and change API.md and API.json
>    accordingly.
> v7:
>    Some minor coding style improvements.
> v6:
>    Do not passthrough PCI device of class code 0x07. It might contains
> system device not suitable to assign to guest.
> v5:
>    Filter ealigible pci devices according to pci class. When assigning a
> device to VM, check if there are other VMs holding it. Use
> "kimchi.model.utils.get_vm_config_flag()" to correctly set the device
> attaching API flag.
> v4:
>    Add new sub-collection to host device to list the VMs holding the device.
> v3:
>    Fix a small naming error introduced by rebase.
> v2:
>    Handle the devices in VM's sub-collection "hostdevs".
> v1:
>    Handle the devices in VM template.
>
> Zhou Zheng Sheng (4):
>    Host device passthrough: List all types of host devices
>    Host device passthrough: List eligible device to passthrough
>    Host device passthrough: Directly assign and dissmis host device from
>      VM
>    Host device passthrough: List VMs that are holding a host device
>
>   docs/API.md                            |  11 +-
>   src/kimchi/control/host.py             |   7 +
>   src/kimchi/control/vm/hostdevs.py      |  44 +++++
>   src/kimchi/featuretests.py             |  10 +-
>   src/kimchi/i18n.py                     |  10 +
>   src/kimchi/mockmodel.py                |   7 +-
>   src/kimchi/model/config.py             |   2 +
>   src/kimchi/model/host.py               |  38 ++--
>   src/kimchi/model/hostdev.py            | 311 +++++++++++++++++++++++++++++++
>   src/kimchi/model/libvirtstoragepool.py |  18 +-
>   src/kimchi/model/vmhostdevs.py         | 324 +++++++++++++++++++++++++++++++++
>   src/kimchi/rollbackcontext.py          |   3 +
>   src/kimchi/xmlutils.py                 |  26 ++-
>   tests/test_rest.py                     |   6 +-
>   tests/test_storagepool.py              |   7 +-
>   15 files changed, 784 insertions(+), 40 deletions(-)
>   create mode 100644 src/kimchi/control/vm/hostdevs.py
>   create mode 100644 src/kimchi/model/hostdev.py
>   create mode 100644 src/kimchi/model/vmhostdevs.py
>





More information about the Kimchi-devel mailing list