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

Zhou Zheng Sheng zhshzhou at linux.vnet.ibm.com
Mon Jul 28 14:18:04 UTC 2014


on 2014/07/28 18:12, Yu Xin Huo wrote:
> My redhat is setup by IT department, I believe it is widely used.
> So team, please discuss and figure out a distribution independent way to
> handle this feature.
> 
Hi! I understand your concern. I also agree RedHat Linux is widely used
and is an important distribution we should support. RedHat Enterprise
Linux sounds more "official" and Fedora sounds more "ad-hoc". The fact
is that though RedHat Linux is widely used, the packages in it is not
the latest, because enterprise oriented software prefers stability to
novelty.

The latest virtualization tech is always firstly available in Fedora,
then backport to RedHat Linux (notice Fedora kernel-3.14.8 qemu-1.6.2
VS. RHEL6.5 kernel-2.6.32 qemu-kvm-0.12.1). This is a common case in
RedHat family distributions. Usually new features, packages and designs
appear in Fedora, after a year or more time it would be applied (or
discarded) in RedHat Linux. Fedora is more or less the "official
laboratory rat" for RedHat Linux. Today's Fedora's features would be
part of tomorrow's RedHat Linux.

I didn't suggest we don't support RedHat Linux, I just suggest for the
first release of this feature, we make it available on Fedora, then
improve the RedHat Linux compatibility. I think it's acceptable that
after we deliver some new things in Fedora, then use a couple of weeks
to make it available in RedHat Linux. I'll continue working on this
feature and improve it.


> On 7/28/2014 5:38 PM, Zhou Zheng Sheng wrote:
>> Hi,
>>
>> Yu Xin and me tested the patches on a PC with RHEL6.4 installed. We
>> turned on vt-d in BIOS, enabled intel_iommu=on in kernel command line.
>>
>> After setting this, I verified the IOMMU is enabled.
>>    dmesg | grep -e DMAR -e IOMMU | grep -e "DRHD base" -e "enabled"
>>
>> Unfortunately qemu failed to assign PCI devices. The Qemu log was vague.
>> I googled and tried some solutions but none worked. It might be the
>> problem of the machine itself or the maturity of this feature in kernel
>> 2.6 and qemu-kvm 0.12.
>>
>> I also find the libvirt version on RHEL6 is a bit old, it does not
>> provide the necessary device information, so we have to write extra code
>> to fetch it. Moreover, the iommu group sysfs is added in Kenel 3.5, so
>> RHEL6 does not have it.
>>
>> It seems we need more time and work to support RHEL6, so I suggest that,
>> for the first release of this feature, we support the latest Fedora,
>> then in next releases we improve the support for RHEL6.
>>
>> on 2014/07/28 11:01, Zhou Zheng Sheng wrote:
>>> Hi,
>>>
>>> I rebased the patches and send you the drafts for you to test and
>>> develop. I'll add doc and unit tests, then send a formal v9 patch to
>>> list today.
>>>
>>> on 2014/07/25 16:39, Yu Xin Huo wrote:
>>>> Apply failed.
>>>>
>>>>
>>>> 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
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Kimchi-devel mailing list
>>>> Kimchi-devel at ovirt.org
>>>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>>>
>>>
>>
> 
> 


-- 
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397




More information about the Kimchi-devel mailing list