mirror of https://gitee.com/openkylin/linux.git
iommu: Add is_attach_deferred call-back to iommu-ops
This new call-back will be used to check if the domain attach need be deferred for now. If yes, the domain attach/detach will return directly. Signed-off-by: Baoquan He <bhe@redhat.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
53019a9e88
commit
e01d1913b0
|
@ -1283,6 +1283,10 @@ static int __iommu_attach_device(struct iommu_domain *domain,
|
|||
struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
if ((domain->ops->is_attach_deferred != NULL) &&
|
||||
domain->ops->is_attach_deferred(domain, dev))
|
||||
return 0;
|
||||
|
||||
if (unlikely(domain->ops->attach_dev == NULL))
|
||||
return -ENODEV;
|
||||
|
||||
|
@ -1324,6 +1328,10 @@ EXPORT_SYMBOL_GPL(iommu_attach_device);
|
|||
static void __iommu_detach_device(struct iommu_domain *domain,
|
||||
struct device *dev)
|
||||
{
|
||||
if ((domain->ops->is_attach_deferred != NULL) &&
|
||||
domain->ops->is_attach_deferred(domain, dev))
|
||||
return;
|
||||
|
||||
if (unlikely(domain->ops->detach_dev == NULL))
|
||||
return;
|
||||
|
||||
|
|
|
@ -225,6 +225,7 @@ struct iommu_ops {
|
|||
u32 (*domain_get_windows)(struct iommu_domain *domain);
|
||||
|
||||
int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
|
||||
bool (*is_attach_deferred)(struct iommu_domain *domain, struct device *dev);
|
||||
|
||||
unsigned long pgsize_bitmap;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue