Re: [PATCH v2 0/2] intel-iommu: Fix domain_ids exhaustion

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

 



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


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux