Re: [RFC PATCH 00/28] Enable multifunction pci hotplug

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

 





On 03/15/2018 03:31 PM, Daniel P. Berrangé wrote:
On Wed, Mar 14, 2018 at 10:44:30PM +0530, Shivaprasad G Bhat wrote:
Hi All,

I have revisited/rewritten my previously posted patches. Here is
the RFC. Since this patchset is a complete rewrite, I am starting
with v1 here.

The semantics is as discussed before
https://www.redhat.com/archives/libvir-list/2016-April/msg01057.html

As I went on to refactor the code to support multifunction virtio devices,
I realised the abort/cleanup path would be a nightmare there, in case of
failures. So, dropped that attempt. The current RFC limits to the real
practical use cases of Multifunction PCI hostdevices. All new test code
to support multifunction PCI hostdevices and test cases are added to
prove the functionality.
I guess I'm not really understanding the use case here.  With SRIOV
devices, you can already choose between assigning either the physical
function (which gives the guest access to all virtual functions), or
to assign an arbitrary set of individiual functions to various guests.
Why do we need to be able to list many <hostdev> at the same time
when hotplugging to assign multiple functions.

Basically can you provide a full description of the problem you are
trying to solve and why existing functionality isn't sufficient.

Hi Daniel,

This is for cards which may not necessarily be networking cards. Or may be a mix of
networking and storage.

Suppose, user has below card
0005:01:00.0 Ethernet controller: Emulex Corporation OneConnect NIC (Lancer) (rev 10) 0005:01:00.1 Ethernet controller: Emulex Corporation OneConnect NIC (Lancer) (rev 10) 0005:01:00.2 Ethernet controller: Emulex Corporation OneConnect NIC (Lancer) (rev 10) 0005:01:00.3 Ethernet controller: Emulex Corporation OneConnect NIC (Lancer) (rev 10) 0005:01:00.4 Fibre Channel: Emulex Corporation OneConnect FCoE Initiator (Lancer) (rev 10) 0005:01:00.5 Fibre Channel: Emulex Corporation OneConnect FCoE Initiator (Lancer) (rev 10)

If user wants to hotplug this card to guest, He has to detach all the functions from host driver, then hotplug 0005:01:00.0, 0005:01:00.1, so on individually. But, today with each hotplug of the function, each <hostdev> goes to different guest slot. Whereas, PCI requires all of
them to be on the same slot. This is not supported on libvirt today.

The multifunction cards cant be hotplugged to guest today with the individual <hostdev>, as the operation is queued by qemu till the function zero of guest slot is
hotplugged. On function zero hotplug, the qemu sends out the event to guest
for device probing where all the previously hotplugged functions from the
same slot are discovered. So, grouping the <hostdev>s within the <devices>
would become necessary to make the whole thing a single operation.

The patches try to fix this aspect of the use case.

Thanks,
Shivaprasad

Regards,
Daniel

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux