<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<font size="+1">Hi,<br>
<br>
I have a PoC that enables partial coldplug assignment of
multifunction<br>
PCI devices with managed mode. At this moment, Libvirt can't
handle<br>
this scenario - the code will detach only the hostdevs from the
XML,<br>
when in fact the whole IOMMU needs to be detached. This can be<br>
verified by the fact that Libvirt handles the unmanaged scenario<br>
well, as long as the user detaches the whole IOMMU beforehand.<br>
<br>
I have played with 2 approaches. The one I am planning to
contribute<br>
back is a change inside virHostdevGetPCIHostDeviceList(), that<br>
adds the extra PCI devices for detach/re-attach in case a PCI<br>
Multifunction device in managed mode is presented in the XML.<br>
<br>
Now, there's a catch. Inside both </font><font size="+1"><font
size="+1">virHostdevPreparePCIDevices()<br>
and virHostdevReAttachPCIDevices() there are code to
save/restore<br>
the network configuration for SR-IOV devices. T</font>hese
functions iterates<br>
in the hostdevs list, instead of the pcidevs list I'm changing.
The final<br>
result, given that the current conditions used for SR-IOV matches
the<br>
conditions for multifunction PCI devices as well, is that not all
virtual<br>
functions will get their network configuration saved/restored.<br>
<br>
For example, a guest that uses 3 of 4 functions of a PCI
MultiFunction<br>
card, let's say functions 0,1 and 3. The code will handle the
detach<br>
of all the IOMMU, including the function 2 that isn't declared in
the<br>
XML. However, since function 2 isn't a hostdev, its network config<br>
will not be restored after the VM shutdown.<br>
<br>
Now comes the question: how much effort should be spent into
making<br>
the network config of all the functions be restored? Is this a
blocker<br>
for the whole code to be accepted or, given it is proper
documented<br>
somewhere, it can be done later on?<br>
<br>
<br>
Thanks,<br>
<br>
<br>
DHB <br>
<br>
<br>
<br>
<br>
<br>
<br>
</font>
</body>
</html>