summaryrefslogtreecommitdiff
path: root/drivers/iommu/amd/iommu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/iommu/amd/iommu.c')
-rw-r--r--drivers/iommu/amd/iommu.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index 4426e68de808..599aae889be8 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -210,7 +210,7 @@ static struct iommu_dev_data *alloc_dev_data(struct amd_iommu *iommu, u16 devid)
if (!dev_data)
return NULL;
- spin_lock_init(&dev_data->lock);
+ mutex_init(&dev_data->mutex);
dev_data->devid = devid;
ratelimit_default_init(&dev_data->rs);
@@ -2092,7 +2092,7 @@ static int attach_device(struct device *dev,
struct amd_iommu *iommu = get_amd_iommu_from_dev_data(dev_data);
int ret = 0;
- spin_lock(&dev_data->lock);
+ mutex_lock(&dev_data->mutex);
if (dev_data->domain != NULL) {
ret = -EBUSY;
@@ -2118,7 +2118,7 @@ static int attach_device(struct device *dev,
}
out:
- spin_unlock(&dev_data->lock);
+ mutex_unlock(&dev_data->mutex);
return ret;
}
@@ -2134,7 +2134,7 @@ static void detach_device(struct device *dev)
bool ppr = dev_data->ppr;
unsigned long flags;
- spin_lock(&dev_data->lock);
+ mutex_lock(&dev_data->mutex);
/*
* First check if the device is still attached. It might already
@@ -2172,7 +2172,7 @@ static void detach_device(struct device *dev)
pdom_detach_iommu(iommu, domain);
out:
- spin_unlock(&dev_data->lock);
+ mutex_unlock(&dev_data->mutex);
/* Remove IOPF handler */
if (ppr)
@@ -2470,9 +2470,9 @@ static int blocked_domain_attach_device(struct iommu_domain *domain,
detach_device(dev);
/* Clear DTE and flush the entry */
- spin_lock(&dev_data->lock);
+ mutex_lock(&dev_data->mutex);
dev_update_dte(dev_data, false);
- spin_unlock(&dev_data->lock);
+ mutex_unlock(&dev_data->mutex);
return 0;
}