iommu/omap: Remove refcount field from omap_iommu object
The refcount field in omap_iommu object is primarily used to check if an IOMMU device has already been enabled, but this is already implicit in the omap_iommu_attach_dev() which ensures that only a single device can attach to an IOMMU. This field is redundant, and so has been cleaned up. Signed-off-by: Suman Anna <s-anna@ti.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
Родитель
f114040e3e
Коммит
2088ecba93
|
@ -819,8 +819,9 @@ static irqreturn_t iommu_fault_handler(int irq, void *data)
|
|||
u32 *iopgd, *iopte;
|
||||
struct omap_iommu *obj = data;
|
||||
struct iommu_domain *domain = obj->domain;
|
||||
struct omap_iommu_domain *omap_domain = domain->priv;
|
||||
|
||||
if (!obj->refcount)
|
||||
if (!omap_domain->iommu_dev)
|
||||
return IRQ_NONE;
|
||||
|
||||
errs = iommu_report_fault(obj, &da);
|
||||
|
@ -880,13 +881,6 @@ static struct omap_iommu *omap_iommu_attach(const char *name, u32 *iopgd)
|
|||
|
||||
spin_lock(&obj->iommu_lock);
|
||||
|
||||
/* an iommu device can only be attached once */
|
||||
if (++obj->refcount > 1) {
|
||||
dev_err(dev, "%s: already attached!\n", obj->name);
|
||||
err = -EBUSY;
|
||||
goto err_enable;
|
||||
}
|
||||
|
||||
obj->iopgd = iopgd;
|
||||
err = iommu_enable(obj);
|
||||
if (err)
|
||||
|
@ -899,7 +893,6 @@ static struct omap_iommu *omap_iommu_attach(const char *name, u32 *iopgd)
|
|||
return obj;
|
||||
|
||||
err_enable:
|
||||
obj->refcount--;
|
||||
spin_unlock(&obj->iommu_lock);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
@ -915,9 +908,7 @@ static void omap_iommu_detach(struct omap_iommu *obj)
|
|||
|
||||
spin_lock(&obj->iommu_lock);
|
||||
|
||||
if (--obj->refcount == 0)
|
||||
iommu_disable(obj);
|
||||
|
||||
iommu_disable(obj);
|
||||
obj->iopgd = NULL;
|
||||
|
||||
spin_unlock(&obj->iommu_lock);
|
||||
|
|
|
@ -33,7 +33,6 @@ struct omap_iommu {
|
|||
void *isr_priv;
|
||||
struct iommu_domain *domain;
|
||||
|
||||
unsigned int refcount;
|
||||
spinlock_t iommu_lock; /* global for this whole object */
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче