return false;
 }
 
+static int gart_iommu_add_device(struct device *dev)
+{
+       struct iommu_group *group = iommu_group_get_for_dev(dev);
+
+       if (IS_ERR(group))
+               return PTR_ERR(group);
+
+       iommu_group_put(group);
+       return 0;
+}
+
+static void gart_iommu_remove_device(struct device *dev)
+{
+       iommu_group_remove_device(dev);
+}
+
 static const struct iommu_ops gart_iommu_ops = {
        .capable        = gart_iommu_capable,
        .domain_alloc   = gart_iommu_domain_alloc,
        .domain_free    = gart_iommu_domain_free,
        .attach_dev     = gart_iommu_attach_dev,
        .detach_dev     = gart_iommu_detach_dev,
+       .add_device     = gart_iommu_add_device,
+       .remove_device  = gart_iommu_remove_device,
+       .device_group   = generic_device_group,
        .map            = gart_iommu_map,
        .map_sg         = default_iommu_map_sg,
        .unmap          = gart_iommu_unmap,