{
int err;
int s1_bypass = 0, is_fast = 0;
- struct iommu_group *group;
iommu_domain_get_attr(mapping->domain, DOMAIN_ATTR_FAST, &is_fast);
if (is_fast)
return fast_smmu_attach_device(dev, mapping);
- group = iommu_group_get(dev);
- if (!group) {
- dev_err(dev, "Couldn't get group\n");
- return -ENODEV;
- }
-
- err = iommu_attach_group(mapping->domain, group);
+ err = iommu_attach_device(mapping->domain, dev);
if (err)
return err;
{
struct dma_iommu_mapping *mapping;
int is_fast;
- struct iommu_group *group;
mapping = to_dma_iommu_mapping(dev);
if (!mapping) {
return;
}
- group = iommu_group_get(dev);
- if (!group) {
- dev_err(dev, "Couldn't get group\n");
- return;
- }
-
- iommu_detach_group(mapping->domain, group);
+ iommu_detach_device(mapping->domain, dev);
kref_put(&mapping->kref, release_iommu_mapping);
dev->archdata.mapping = NULL;
set_dma_ops(dev, NULL);