|
@@ -2466,18 +2466,16 @@ static int device_change_notifier(struct notifier_block *nb,
|
|
|
|
|
|
/* allocate a protection domain if a device is added */
|
|
|
dma_domain = find_protection_domain(devid);
|
|
|
- if (dma_domain)
|
|
|
- goto out;
|
|
|
- dma_domain = dma_ops_domain_alloc();
|
|
|
- if (!dma_domain)
|
|
|
- goto out;
|
|
|
- dma_domain->target_dev = devid;
|
|
|
-
|
|
|
- spin_lock_irqsave(&iommu_pd_list_lock, flags);
|
|
|
- list_add_tail(&dma_domain->list, &iommu_pd_list);
|
|
|
- spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
|
|
|
-
|
|
|
- dev_data = get_dev_data(dev);
|
|
|
+ if (!dma_domain) {
|
|
|
+ dma_domain = dma_ops_domain_alloc();
|
|
|
+ if (!dma_domain)
|
|
|
+ goto out;
|
|
|
+ dma_domain->target_dev = devid;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&iommu_pd_list_lock, flags);
|
|
|
+ list_add_tail(&dma_domain->list, &iommu_pd_list);
|
|
|
+ spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
|
|
|
+ }
|
|
|
|
|
|
dev->archdata.dma_ops = &amd_iommu_dma_ops;
|
|
|
|