mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-07 06:47:59 +07:00
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)
|
struct device *dev)
|
||||||
{
|
{
|
||||||
int ret;
|
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))
|
if (unlikely(domain->ops->attach_dev == NULL))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
@ -1324,6 +1328,10 @@ EXPORT_SYMBOL_GPL(iommu_attach_device);
|
|||||||
static void __iommu_detach_device(struct iommu_domain *domain,
|
static void __iommu_detach_device(struct iommu_domain *domain,
|
||||||
struct device *dev)
|
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))
|
if (unlikely(domain->ops->detach_dev == NULL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -225,6 +225,7 @@ struct iommu_ops {
|
|||||||
u32 (*domain_get_windows)(struct iommu_domain *domain);
|
u32 (*domain_get_windows)(struct iommu_domain *domain);
|
||||||
|
|
||||||
int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
|
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;
|
unsigned long pgsize_bitmap;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user