Alex Williamson wrote: > When we unbind a device from a driver, we don't properly unlink > the domain from the iommu, so we never free the domain id it > was using. We're typically limited to something like 256 domain > ids, so a loop of unbinding and rebinding a device can exhaust > this pretty quickly. If we're assigning the device to a KVM > guest, libvirt does exactly this each time the device is removed > from the host driver or added back. When we do run out, we oops > the kernel. Fix these. > > v2: > > We only want to call domain_exit() for domains automatically created > via the dma ops path. VM and SI domains have their own life cycle > and should not be destroyed here. With v1, if a device was unbound > from pci-stub while assigned to a VM, the kernel would oops on the > next call into iommu ops. > > BTW, should we even be removing the device from the domain in the > VM domain case? Drivers and VM domains are (unfortunately) orthogonal > concepts here with the way KVM is currently wired. Thanks, > > Alex > > --- > > Alex Williamson (2): > intel-iommu: Fix get_domain_for_dev() error path > intel-iommu: Unlink domain from iommu > > > drivers/pci/intel-iommu.c | 15 +++++++++++++-- > 1 files changed, 13 insertions(+), 2 deletions(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html Acked-by: Donald Dutile <ddutile@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html