<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>