On 2023/2/2 15:05, Nicolin Chen wrote:
+/**
- iommu_group_replace_domain - replace the domain that a group is attached to
- @new_domain: new IOMMU domain to replace with
- @group: IOMMU group that will be attached to the new domain
- This API allows the group to switch domains without being forced to go to
- the blocking domain in-between.
- If the attached domain is a core domain (e.g. a default_domain), it will act
- just like the iommu_attach_group().
I am not following above two lines. Why and how could iommufd set a core domain to an iommu_group?
- */
+int iommu_group_replace_domain(struct iommu_group *group,
struct iommu_domain *new_domain)
+{
- int ret;
- if (!new_domain)
return -EINVAL;
- mutex_lock(&group->mutex);
- ret = __iommu_group_set_domain(group, new_domain);
- if (ret) {
if (__iommu_group_set_domain(group, group->domain))
__iommu_group_set_core_domain(group);
- }
- mutex_unlock(&group->mutex);
- return ret;
+} +EXPORT_SYMBOL_NS_GPL(iommu_group_replace_domain, IOMMUFD_INTERNAL);
Best regards, baolu