Lines Matching full:group

59 	ssize_t (*show)(struct iommu_group *group, char *buf);
60 ssize_t (*store)(struct iommu_group *group,
84 static int iommu_alloc_default_domain(struct iommu_group *group,
91 struct iommu_group *group);
93 struct iommu_group *group);
94 static int iommu_create_device_direct_mappings(struct iommu_group *group,
203 struct iommu_group *group; in __iommu_probe_device() local
225 group = iommu_group_get_for_dev(dev); in __iommu_probe_device()
226 if (IS_ERR(group)) { in __iommu_probe_device()
227 ret = PTR_ERR(group); in __iommu_probe_device()
230 iommu_group_put(group); in __iommu_probe_device()
232 if (group_list && !group->default_domain && list_empty(&group->entry)) in __iommu_probe_device()
233 list_add_tail(&group->entry, group_list); in __iommu_probe_device()
254 struct iommu_group *group; in iommu_probe_device() local
261 group = iommu_group_get(dev); in iommu_probe_device()
262 if (!group) in iommu_probe_device()
271 mutex_lock(&group->mutex); in iommu_probe_device()
272 iommu_alloc_default_domain(group, dev); in iommu_probe_device()
274 if (group->default_domain) { in iommu_probe_device()
275 ret = __iommu_attach_device(group->default_domain, dev); in iommu_probe_device()
277 mutex_unlock(&group->mutex); in iommu_probe_device()
278 iommu_group_put(group); in iommu_probe_device()
283 iommu_create_device_direct_mappings(group, dev); in iommu_probe_device()
285 mutex_unlock(&group->mutex); in iommu_probe_device()
286 iommu_group_put(group); in iommu_probe_device()
345 struct iommu_group *group = to_iommu_group(kobj); in iommu_group_attr_show() local
349 ret = attr->show(group, buf); in iommu_group_attr_show()
358 struct iommu_group *group = to_iommu_group(kobj); in iommu_group_attr_store() local
362 ret = attr->store(group, buf, count); in iommu_group_attr_store()
371 static int iommu_group_create_file(struct iommu_group *group, in iommu_group_create_file() argument
374 return sysfs_create_file(&group->kobj, &attr->attr); in iommu_group_create_file()
377 static void iommu_group_remove_file(struct iommu_group *group, in iommu_group_remove_file() argument
380 sysfs_remove_file(&group->kobj, &attr->attr); in iommu_group_remove_file()
383 static ssize_t iommu_group_show_name(struct iommu_group *group, char *buf) in iommu_group_show_name() argument
385 return sprintf(buf, "%s\n", group->name); in iommu_group_show_name()
464 int iommu_get_group_resv_regions(struct iommu_group *group, in iommu_get_group_resv_regions() argument
470 mutex_lock(&group->mutex); in iommu_get_group_resv_regions()
471 list_for_each_entry(device, &group->devices, list) { in iommu_get_group_resv_regions()
481 mutex_unlock(&group->mutex); in iommu_get_group_resv_regions()
486 static ssize_t iommu_group_show_resv_regions(struct iommu_group *group, in iommu_group_show_resv_regions() argument
494 iommu_get_group_resv_regions(group, &group_resv_regions); in iommu_group_show_resv_regions()
508 static ssize_t iommu_group_show_type(struct iommu_group *group, in iommu_group_show_type() argument
513 if (group->default_domain) { in iommu_group_show_type()
514 switch (group->default_domain->type) { in iommu_group_show_type()
543 struct iommu_group *group = to_iommu_group(kobj); in iommu_group_release() local
545 pr_debug("Releasing group %d\n", group->id); in iommu_group_release()
547 if (group->iommu_data_release) in iommu_group_release()
548 group->iommu_data_release(group->iommu_data); in iommu_group_release()
550 ida_simple_remove(&iommu_group_ida, group->id); in iommu_group_release()
552 if (group->default_domain) in iommu_group_release()
553 iommu_domain_free(group->default_domain); in iommu_group_release()
555 kfree(group->name); in iommu_group_release()
556 kfree(group); in iommu_group_release()
565 * iommu_group_alloc - Allocate a new group
568 * group. The iommu group represents the minimum granularity of the iommu.
570 * group in order to hold the group until devices are added. Use
572 * group to be automatically reclaimed once it has no devices or external
577 struct iommu_group *group; in iommu_group_alloc() local
580 group = kzalloc(sizeof(*group), GFP_KERNEL); in iommu_group_alloc()
581 if (!group) in iommu_group_alloc()
584 group->kobj.kset = iommu_group_kset; in iommu_group_alloc()
585 mutex_init(&group->mutex); in iommu_group_alloc()
586 INIT_LIST_HEAD(&group->devices); in iommu_group_alloc()
587 INIT_LIST_HEAD(&group->entry); in iommu_group_alloc()
588 BLOCKING_INIT_NOTIFIER_HEAD(&group->notifier); in iommu_group_alloc()
592 kfree(group); in iommu_group_alloc()
595 group->id = ret; in iommu_group_alloc()
597 ret = kobject_init_and_add(&group->kobj, &iommu_group_ktype, in iommu_group_alloc()
598 NULL, "%d", group->id); in iommu_group_alloc()
600 ida_simple_remove(&iommu_group_ida, group->id); in iommu_group_alloc()
601 kobject_put(&group->kobj); in iommu_group_alloc()
605 group->devices_kobj = kobject_create_and_add("devices", &group->kobj); in iommu_group_alloc()
606 if (!group->devices_kobj) { in iommu_group_alloc()
607 kobject_put(&group->kobj); /* triggers .release & free */ in iommu_group_alloc()
612 * The devices_kobj holds a reference on the group kobject, so in iommu_group_alloc()
613 * as long as that exists so will the group. We can therefore in iommu_group_alloc()
616 kobject_put(&group->kobj); in iommu_group_alloc()
618 ret = iommu_group_create_file(group, in iommu_group_alloc()
623 ret = iommu_group_create_file(group, &iommu_group_attr_type); in iommu_group_alloc()
627 pr_debug("Allocated group %d\n", group->id); in iommu_group_alloc()
629 return group; in iommu_group_alloc()
636 struct iommu_group *group; in iommu_group_get_by_id() local
652 group = container_of(group_kobj, struct iommu_group, kobj); in iommu_group_get_by_id()
653 BUG_ON(group->id != id); in iommu_group_get_by_id()
655 kobject_get(group->devices_kobj); in iommu_group_get_by_id()
656 kobject_put(&group->kobj); in iommu_group_get_by_id()
658 return group; in iommu_group_get_by_id()
663 * iommu_group_get_iommudata - retrieve iommu_data registered for a group
664 * @group: the group
666 * iommu drivers can store data in the group for use when doing iommu
668 * should hold a group reference.
670 void *iommu_group_get_iommudata(struct iommu_group *group) in iommu_group_get_iommudata() argument
672 return group->iommu_data; in iommu_group_get_iommudata()
677 * iommu_group_set_iommudata - set iommu_data for a group
678 * @group: the group
682 * iommu drivers can store data in the group for use when doing iommu
684 * the group has been allocated. Caller should hold a group reference.
686 void iommu_group_set_iommudata(struct iommu_group *group, void *iommu_data, in iommu_group_set_iommudata() argument
689 group->iommu_data = iommu_data; in iommu_group_set_iommudata()
690 group->iommu_data_release = release; in iommu_group_set_iommudata()
695 * iommu_group_set_name - set name for a group
696 * @group: the group
699 * Allow iommu driver to set a name for a group. When set it will
700 * appear in a name attribute file under the group in sysfs.
702 int iommu_group_set_name(struct iommu_group *group, const char *name) in iommu_group_set_name() argument
706 if (group->name) { in iommu_group_set_name()
707 iommu_group_remove_file(group, &iommu_group_attr_name); in iommu_group_set_name()
708 kfree(group->name); in iommu_group_set_name()
709 group->name = NULL; in iommu_group_set_name()
714 group->name = kstrdup(name, GFP_KERNEL); in iommu_group_set_name()
715 if (!group->name) in iommu_group_set_name()
718 ret = iommu_group_create_file(group, &iommu_group_attr_name); in iommu_group_set_name()
720 kfree(group->name); in iommu_group_set_name()
721 group->name = NULL; in iommu_group_set_name()
729 static int iommu_create_device_direct_mappings(struct iommu_group *group, in iommu_create_device_direct_mappings() argument
732 struct iommu_domain *domain = group->default_domain; in iommu_create_device_direct_mappings()
794 * iommu_group_add_device - add a device to an iommu group
795 * @group: the group into which to add the device (reference should be held)
799 * group. Adding a device increments the group reference count.
801 int iommu_group_add_device(struct iommu_group *group, struct device *dev) in iommu_group_add_device() argument
812 ret = sysfs_create_link(&dev->kobj, &group->kobj, "iommu_group"); in iommu_group_add_device()
823 ret = sysfs_create_link_nowarn(group->devices_kobj, in iommu_group_add_device()
839 kobject_get(group->devices_kobj); in iommu_group_add_device()
841 dev->iommu_group = group; in iommu_group_add_device()
843 mutex_lock(&group->mutex); in iommu_group_add_device()
844 list_add_tail(&device->list, &group->devices); in iommu_group_add_device()
845 if (group->domain && !iommu_is_attach_deferred(group->domain, dev)) in iommu_group_add_device()
846 ret = __iommu_attach_device(group->domain, dev); in iommu_group_add_device()
847 mutex_unlock(&group->mutex); in iommu_group_add_device()
851 /* Notify any listeners about change to group. */ in iommu_group_add_device()
852 blocking_notifier_call_chain(&group->notifier, in iommu_group_add_device()
855 trace_add_device_to_group(group->id, dev); in iommu_group_add_device()
857 dev_info(dev, "Adding to iommu group %d\n", group->id); in iommu_group_add_device()
862 mutex_lock(&group->mutex); in iommu_group_add_device()
864 mutex_unlock(&group->mutex); in iommu_group_add_device()
866 kobject_put(group->devices_kobj); in iommu_group_add_device()
867 sysfs_remove_link(group->devices_kobj, device->name); in iommu_group_add_device()
874 dev_err(dev, "Failed to add to iommu group %d: %d\n", group->id, ret); in iommu_group_add_device()
880 * iommu_group_remove_device - remove a device from it's current group
884 * it's current group. This decrements the iommu group reference count.
888 struct iommu_group *group = dev->iommu_group; in iommu_group_remove_device() local
891 if (!group) in iommu_group_remove_device()
894 dev_info(dev, "Removing from iommu group %d\n", group->id); in iommu_group_remove_device()
897 blocking_notifier_call_chain(&group->notifier, in iommu_group_remove_device()
900 mutex_lock(&group->mutex); in iommu_group_remove_device()
901 list_for_each_entry(tmp_device, &group->devices, list) { in iommu_group_remove_device()
908 mutex_unlock(&group->mutex); in iommu_group_remove_device()
913 sysfs_remove_link(group->devices_kobj, device->name); in iommu_group_remove_device()
916 trace_remove_device_from_group(group->id, dev); in iommu_group_remove_device()
921 kobject_put(group->devices_kobj); in iommu_group_remove_device()
925 static int iommu_group_device_count(struct iommu_group *group) in iommu_group_device_count() argument
930 list_for_each_entry(entry, &group->devices, list) in iommu_group_device_count()
937 * iommu_group_for_each_dev - iterate over each device in the group
938 * @group: the group
942 * This function is called by group users to iterate over group devices.
943 * Callers should hold a reference count to the group during callback.
944 * The group->mutex is held across callbacks, which will block calls to
947 static int __iommu_group_for_each_dev(struct iommu_group *group, void *data, in __iommu_group_for_each_dev() argument
953 list_for_each_entry(device, &group->devices, list) { in __iommu_group_for_each_dev()
962 int iommu_group_for_each_dev(struct iommu_group *group, void *data, in iommu_group_for_each_dev() argument
967 mutex_lock(&group->mutex); in iommu_group_for_each_dev()
968 ret = __iommu_group_for_each_dev(group, data, fn); in iommu_group_for_each_dev()
969 mutex_unlock(&group->mutex); in iommu_group_for_each_dev()
976 * iommu_group_get - Return the group for a device and increment reference
977 * @dev: get the group that this device belongs to
979 * This function is called by iommu drivers and users to get the group
980 * for the specified device. If found, the group is returned and the group
985 struct iommu_group *group = dev->iommu_group; in iommu_group_get() local
987 if (group) in iommu_group_get()
988 kobject_get(group->devices_kobj); in iommu_group_get()
990 return group; in iommu_group_get()
995 * iommu_group_ref_get - Increment reference on a group
996 * @group: the group to use, must not be NULL
999 * existing group. Returns the given group for convenience.
1001 struct iommu_group *iommu_group_ref_get(struct iommu_group *group) in iommu_group_ref_get() argument
1003 kobject_get(group->devices_kobj); in iommu_group_ref_get()
1004 return group; in iommu_group_ref_get()
1009 * iommu_group_put - Decrement group reference
1010 * @group: the group to use
1013 * iommu group. Once the reference count is zero, the group is released.
1015 void iommu_group_put(struct iommu_group *group) in iommu_group_put() argument
1017 if (group) in iommu_group_put()
1018 kobject_put(group->devices_kobj); in iommu_group_put()
1023 * iommu_group_register_notifier - Register a notifier for group changes
1024 * @group: the group to watch
1027 * This function allows iommu group users to track changes in a group.
1029 * should hold a reference to the group throughout notifier registration.
1031 int iommu_group_register_notifier(struct iommu_group *group, in iommu_group_register_notifier() argument
1034 return blocking_notifier_chain_register(&group->notifier, nb); in iommu_group_register_notifier()
1040 * @group: the group to watch
1043 * Unregister a previously registered group notifier block.
1045 int iommu_group_unregister_notifier(struct iommu_group *group, in iommu_group_unregister_notifier() argument
1048 return blocking_notifier_chain_unregister(&group->notifier, nb); in iommu_group_unregister_notifier()
1237 * matched using the group ID, the PASID valid bit and the PASID in iommu_page_response()
1238 * value. Otherwise only the group ID matches request and in iommu_page_response()
1264 * iommu_group_id - Return ID for a group
1265 * @group: the group to ID
1267 * Return the unique ID for the group matching the sysfs group number.
1269 int iommu_group_id(struct iommu_group *group) in iommu_group_id() argument
1271 return group->id; in iommu_group_id()
1292 * that may already have a group.
1298 struct iommu_group *group; in get_pci_function_alias_group() local
1309 group = get_pci_alias_group(tmp, devfns); in get_pci_function_alias_group()
1310 if (group) { in get_pci_function_alias_group()
1312 return group; in get_pci_function_alias_group()
1332 struct iommu_group *group; in get_pci_alias_group() local
1337 group = iommu_group_get(&pdev->dev); in get_pci_alias_group()
1338 if (group) in get_pci_alias_group()
1339 return group; in get_pci_alias_group()
1347 group = get_pci_alias_group(tmp, devfns); in get_pci_alias_group()
1348 if (group) { in get_pci_alias_group()
1350 return group; in get_pci_alias_group()
1353 group = get_pci_function_alias_group(tmp, devfns); in get_pci_alias_group()
1354 if (group) { in get_pci_alias_group()
1356 return group; in get_pci_alias_group()
1366 struct iommu_group *group; member
1371 * the IOMMU group if we find one along the way.
1378 data->group = iommu_group_get(&pdev->dev); in get_pci_alias_or_group()
1380 return data->group != NULL; in get_pci_alias_or_group()
1385 * iommu-group per device.
1395 * to find or create an IOMMU group for a device.
1402 struct iommu_group *group = NULL; in pci_device_group() local
1410 * be aliased due to topology in order to have its own IOMMU group. in pci_device_group()
1412 * group, use it. in pci_device_group()
1415 return data.group; in pci_device_group()
1423 * group, use it. in pci_device_group()
1434 group = iommu_group_get(&pdev->dev); in pci_device_group()
1435 if (group) in pci_device_group()
1436 return group; in pci_device_group()
1441 * device or another device aliases us, use the same group. in pci_device_group()
1443 group = get_pci_alias_group(pdev, (unsigned long *)devfns); in pci_device_group()
1444 if (group) in pci_device_group()
1445 return group; in pci_device_group()
1452 group = get_pci_function_alias_group(pdev, (unsigned long *)devfns); in pci_device_group()
1453 if (group) in pci_device_group()
1454 return group; in pci_device_group()
1456 /* No shared group found, allocate new */ in pci_device_group()
1461 /* Get the IOMMU group for device on fsl-mc bus */
1465 struct iommu_group *group; in fsl_mc_device_group() local
1467 group = iommu_group_get(cont_dev); in fsl_mc_device_group()
1468 if (!group) in fsl_mc_device_group()
1469 group = iommu_group_alloc(); in fsl_mc_device_group()
1470 return group; in fsl_mc_device_group()
1486 struct iommu_group *group, in iommu_group_alloc_default_domain() argument
1495 …pr_warn("Failed to allocate default IOMMU domain of type %u for group %s - Falling back to IOMMU_D… in iommu_group_alloc_default_domain()
1496 type, group->name); in iommu_group_alloc_default_domain()
1502 group->default_domain = dom; in iommu_group_alloc_default_domain()
1503 if (!group->domain) in iommu_group_alloc_default_domain()
1504 group->domain = dom; in iommu_group_alloc_default_domain()
1516 static int iommu_alloc_default_domain(struct iommu_group *group, in iommu_alloc_default_domain() argument
1521 if (group->default_domain) in iommu_alloc_default_domain()
1526 return iommu_group_alloc_default_domain(dev->bus, group, type); in iommu_alloc_default_domain()
1530 * iommu_group_get_for_dev - Find or create the IOMMU group for a device
1535 * IOMMU group for a device. On success, the caller will hold a reference
1536 * to the returned IOMMU group, which will already include the provided
1542 struct iommu_group *group; in iommu_group_get_for_dev() local
1545 group = iommu_group_get(dev); in iommu_group_get_for_dev()
1546 if (group) in iommu_group_get_for_dev()
1547 return group; in iommu_group_get_for_dev()
1552 group = ops->device_group(dev); in iommu_group_get_for_dev()
1553 if (WARN_ON_ONCE(group == NULL)) in iommu_group_get_for_dev()
1556 if (IS_ERR(group)) in iommu_group_get_for_dev()
1557 return group; in iommu_group_get_for_dev()
1559 ret = iommu_group_add_device(group, dev); in iommu_group_get_for_dev()
1563 return group; in iommu_group_get_for_dev()
1566 iommu_group_put(group); in iommu_group_get_for_dev()
1571 struct iommu_domain *iommu_group_default_domain(struct iommu_group *group) in iommu_group_default_domain() argument
1573 return group->default_domain; in iommu_group_default_domain()
1579 struct iommu_group *group; in probe_iommu_group() local
1582 /* Device is probed already if in a group */ in probe_iommu_group()
1583 group = iommu_group_get(dev); in probe_iommu_group()
1584 if (group) { in probe_iommu_group()
1585 iommu_group_put(group); in probe_iommu_group()
1608 struct iommu_group *group; in iommu_bus_notifier() local
1612 * result in ADD/DEL notifiers to group->notifier in iommu_bus_notifier()
1626 * group, if anyone is listening in iommu_bus_notifier()
1628 group = iommu_group_get(dev); in iommu_bus_notifier()
1629 if (!group) in iommu_bus_notifier()
1648 blocking_notifier_call_chain(&group->notifier, in iommu_bus_notifier()
1651 iommu_group_put(group); in iommu_bus_notifier()
1671 …dev_warn(dev, "Device needs domain type %s, but device %s in the same iommu group requires type %s… in probe_get_default_domain_type()
1688 struct iommu_group *group) in probe_alloc_default_domain() argument
1694 /* Ask for default domain requirements of all devices in the group */ in probe_alloc_default_domain()
1695 __iommu_group_for_each_dev(group, &gtype, in probe_alloc_default_domain()
1701 iommu_group_alloc_default_domain(bus, group, gtype.type); in probe_alloc_default_domain()
1716 static int __iommu_group_dma_attach(struct iommu_group *group) in __iommu_group_dma_attach() argument
1718 return __iommu_group_for_each_dev(group, group->default_domain, in __iommu_group_dma_attach()
1732 static void __iommu_group_dma_finalize(struct iommu_group *group) in __iommu_group_dma_finalize() argument
1734 __iommu_group_for_each_dev(group, group->default_domain, in __iommu_group_dma_finalize()
1740 struct iommu_group *group = data; in iommu_do_create_direct_mappings() local
1742 iommu_create_device_direct_mappings(group, dev); in iommu_do_create_direct_mappings()
1747 static int iommu_group_create_direct_mappings(struct iommu_group *group) in iommu_group_create_direct_mappings() argument
1749 return __iommu_group_for_each_dev(group, group, in iommu_group_create_direct_mappings()
1755 struct iommu_group *group, *next; in bus_iommu_probe() local
1761 * creating the iommu group, so do it after the groups are in bus_iommu_probe()
1768 list_for_each_entry_safe(group, next, &group_list, entry) { in bus_iommu_probe()
1770 list_del_init(&group->entry); in bus_iommu_probe()
1772 mutex_lock(&group->mutex); in bus_iommu_probe()
1775 probe_alloc_default_domain(bus, group); in bus_iommu_probe()
1777 if (!group->default_domain) { in bus_iommu_probe()
1778 mutex_unlock(&group->mutex); in bus_iommu_probe()
1782 iommu_group_create_direct_mappings(group); in bus_iommu_probe()
1784 ret = __iommu_group_dma_attach(group); in bus_iommu_probe()
1786 mutex_unlock(&group->mutex); in bus_iommu_probe()
1791 __iommu_group_dma_finalize(group); in bus_iommu_probe()
1952 struct iommu_group *group; in iommu_attach_device() local
1955 group = iommu_group_get(dev); in iommu_attach_device()
1956 if (!group) in iommu_attach_device()
1960 * Lock the group to make sure the device-count doesn't in iommu_attach_device()
1963 mutex_lock(&group->mutex); in iommu_attach_device()
1967 if (iommu_group_device_count(group) < 1) in iommu_attach_device()
1970 ret = __iommu_attach_group(domain, group); in iommu_attach_device()
1973 mutex_unlock(&group->mutex); in iommu_attach_device()
1974 iommu_group_put(group); in iommu_attach_device()
2205 struct iommu_group *group; in iommu_detach_device() local
2207 group = iommu_group_get(dev); in iommu_detach_device()
2208 if (!group) in iommu_detach_device()
2211 mutex_lock(&group->mutex); in iommu_detach_device()
2213 if (iommu_group_device_count(group) < 1) { in iommu_detach_device()
2218 __iommu_detach_group(domain, group); in iommu_detach_device()
2221 mutex_unlock(&group->mutex); in iommu_detach_device()
2222 iommu_group_put(group); in iommu_detach_device()
2229 struct iommu_group *group; in iommu_get_domain_for_dev() local
2231 group = iommu_group_get(dev); in iommu_get_domain_for_dev()
2232 if (!group) in iommu_get_domain_for_dev()
2235 domain = group->domain; in iommu_get_domain_for_dev()
2237 iommu_group_put(group); in iommu_get_domain_for_dev()
2245 * guarantees that the group and its default domain are valid and correct.
2255 * iterating over the devices in a group. Ideally we'd have a single
2256 * device which represents the requestor ID of the group, but we also
2259 * wish to group them at a higher level (ex. untrusted multi-function
2270 struct iommu_group *group) in __iommu_attach_group() argument
2274 if (group->default_domain && group->domain != group->default_domain) in __iommu_attach_group()
2277 ret = __iommu_group_for_each_dev(group, domain, in __iommu_attach_group()
2280 group->domain = domain; in __iommu_attach_group()
2285 int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_attach_group() argument
2289 mutex_lock(&group->mutex); in iommu_attach_group()
2290 ret = __iommu_attach_group(domain, group); in iommu_attach_group()
2291 mutex_unlock(&group->mutex); in iommu_attach_group()
2307 struct iommu_group *group) in __iommu_detach_group() argument
2311 if (!group->default_domain) { in __iommu_detach_group()
2312 __iommu_group_for_each_dev(group, domain, in __iommu_detach_group()
2314 group->domain = NULL; in __iommu_detach_group()
2318 if (group->domain == group->default_domain) in __iommu_detach_group()
2322 ret = __iommu_group_for_each_dev(group, group->default_domain, in __iommu_detach_group()
2327 group->domain = group->default_domain; in __iommu_detach_group()
2330 void iommu_detach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_detach_group() argument
2332 mutex_lock(&group->mutex); in iommu_detach_group()
2333 __iommu_detach_group(domain, group); in iommu_detach_group()
2334 mutex_unlock(&group->mutex); in iommu_detach_group()
3069 struct iommu_group *group; in iommu_sva_bind_device() local
3076 group = iommu_group_get(dev); in iommu_sva_bind_device()
3077 if (!group) in iommu_sva_bind_device()
3081 mutex_lock(&group->mutex); in iommu_sva_bind_device()
3089 if (iommu_group_device_count(group) != 1) in iommu_sva_bind_device()
3095 mutex_unlock(&group->mutex); in iommu_sva_bind_device()
3096 iommu_group_put(group); in iommu_sva_bind_device()
3114 struct iommu_group *group; in iommu_sva_unbind_device() local
3121 group = iommu_group_get(dev); in iommu_sva_unbind_device()
3122 if (!group) in iommu_sva_unbind_device()
3125 mutex_lock(&group->mutex); in iommu_sva_unbind_device()
3127 mutex_unlock(&group->mutex); in iommu_sva_unbind_device()
3129 iommu_group_put(group); in iommu_sva_unbind_device()