Loading drivers/iommu/amd_iommu.c +14 −1 Original line number Diff line number Diff line Loading @@ -2253,6 +2253,8 @@ static void detach_device(struct device *dev) static int amd_iommu_add_device(struct device *dev) { struct iommu_dev_data *dev_data; struct iommu_domain *domain; struct amd_iommu *iommu; u16 devid; int ret; Loading @@ -2270,7 +2272,18 @@ static int amd_iommu_add_device(struct device *dev) } init_iommu_group(dev); dev_data = get_dev_data(dev); if (dev_data && dev_data->iommu_v2) iommu_request_dm_for_dev(dev); /* Domains are initialized for this device - have a look what we ended up with */ domain = iommu_get_domain_for_dev(dev); if (domain->type == IOMMU_DOMAIN_IDENTITY) { dev_data->passthrough = true; dev->archdata.dma_ops = &nommu_dma_ops; } else { dev->archdata.dma_ops = &amd_iommu_dma_ops; } out: iommu_completion_wait(iommu); Loading Loading
drivers/iommu/amd_iommu.c +14 −1 Original line number Diff line number Diff line Loading @@ -2253,6 +2253,8 @@ static void detach_device(struct device *dev) static int amd_iommu_add_device(struct device *dev) { struct iommu_dev_data *dev_data; struct iommu_domain *domain; struct amd_iommu *iommu; u16 devid; int ret; Loading @@ -2270,7 +2272,18 @@ static int amd_iommu_add_device(struct device *dev) } init_iommu_group(dev); dev_data = get_dev_data(dev); if (dev_data && dev_data->iommu_v2) iommu_request_dm_for_dev(dev); /* Domains are initialized for this device - have a look what we ended up with */ domain = iommu_get_domain_for_dev(dev); if (domain->type == IOMMU_DOMAIN_IDENTITY) { dev_data->passthrough = true; dev->archdata.dma_ops = &nommu_dma_ops; } else { dev->archdata.dma_ops = &amd_iommu_dma_ops; } out: iommu_completion_wait(iommu); Loading