1. 21 8月, 2019 12 次提交
  2. 20 8月, 2019 6 次提交
  3. 19 8月, 2019 6 次提交
  4. 17 8月, 2019 2 次提交
    • M
      virhostdev: Unify virHostdevPreparePCIDevices behaviour for KVM and VFIO cases · 5cd4606e
      Michal Privoznik 提交于
      The virHostdevPreparePCIDevices() function works in several
      steps. In the very first one, it checks if devices we want to
      detach from the host are not taken already by some other domain.
      However, this piece of code returns different results depending
      on the stub driver used (which is not wrong per se, but keep on
      reading). If the stub driver is KVM then
      virHostdevIsPCINodeDeviceUsed() is called which basically checks
      if a PCI device from the detach list is not used by any domain
      (including the one we are preparing the device for). If that is
      the case, an error is reported ("device in use") and -1 is
      returned.
      
      However, that is not what happens if the stub driver is VFIO. If
      the stub driver is VFIO, then we iterate over all PCI devices
      from the same IOMMU group and check if they are taken by some
      other domain (because a PCI device, well IOMMU group, can't be
      shared between two or more qemu processes). But we fail to check,
      if the device we are trying to detach from the host is not
      already taken by a domain. That is, calling
      virHostdevPreparePCIDevices() over a hostdev device twice
      succeeds the first time and fails too late in the second run
      (fortunately, virHostdevResetAllPCIDevices() will throw an error,
      but this is already too late because the PCI device in question
      was moved to the list of inactive PCI devices and now it appears
      in both lists).
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Tested-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
      Reviewed-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
      5cd4606e
    • M
      virhostdev: Check driver name too in virHostdevIsPCINodeDeviceUsed() · a307143e
      Michal Privoznik 提交于
      It may happen that there are two domains with the same name in
      two separate drivers (e.g. qemu and lxc). That is why for PCI
      devices we track both names of driver and domain combination
      which has taken the device. However, when we check if given PCI
      device is in use (or PCI devices from the same IOMMU group) we
      compare only domain name. This means that we can mistakenly claim
      device as free to use while in fact it isn't.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Tested-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
      Reviewed-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
      a307143e
  5. 16 8月, 2019 14 次提交