Skip to content

Commit

Permalink
iommu: Add sysfs attribyte for domain type
Browse files Browse the repository at this point in the history
While we could print it at setup time, this is an easier way to match
each device to their default IOMMU allocation type.

Signed-off-by: Olof Johansson <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
  • Loading branch information
olofj authored and joergroedel committed Jul 27, 2018
1 parent 7d0f5fd commit c52c72d
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions drivers/iommu/iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,11 +294,39 @@ static ssize_t iommu_group_show_resv_regions(struct iommu_group *group,
return (str - buf);
}

static ssize_t iommu_group_show_type(struct iommu_group *group,
char *buf)
{
char *type = "unknown\n";

if (group->default_domain) {
switch (group->default_domain->type) {
case IOMMU_DOMAIN_BLOCKED:
type = "blocked\n";
break;
case IOMMU_DOMAIN_IDENTITY:
type = "identity\n";
break;
case IOMMU_DOMAIN_UNMANAGED:
type = "unmanaged\n";
break;
case IOMMU_DOMAIN_DMA:
type = "DMA";
break;
}
}
strcpy(buf, type);

return strlen(type);
}

static IOMMU_GROUP_ATTR(name, S_IRUGO, iommu_group_show_name, NULL);

static IOMMU_GROUP_ATTR(reserved_regions, 0444,
iommu_group_show_resv_regions, NULL);

static IOMMU_GROUP_ATTR(type, 0444, iommu_group_show_type, NULL);

static void iommu_group_release(struct kobject *kobj)
{
struct iommu_group *group = to_iommu_group(kobj);
Expand Down Expand Up @@ -380,6 +408,10 @@ struct iommu_group *iommu_group_alloc(void)
if (ret)
return ERR_PTR(ret);

ret = iommu_group_create_file(group, &iommu_group_attr_type);
if (ret)
return ERR_PTR(ret);

pr_debug("Allocated group %d\n", group->id);

return group;
Expand Down

0 comments on commit c52c72d

Please sign in to comment.