Lines Matching refs:smmu_group
1559 struct arm_smmu_group *smmu_group; in arm_smmu_group_get() local
1565 smmu_group = iommu_group_get_iommudata(group); in arm_smmu_group_get()
1567 return smmu_group; in arm_smmu_group_get()
1592 static int arm_smmu_install_ste_for_group(struct arm_smmu_group *smmu_group) in arm_smmu_install_ste_for_group() argument
1595 struct arm_smmu_domain *smmu_domain = smmu_group->domain; in arm_smmu_install_ste_for_group()
1596 struct arm_smmu_strtab_ent *ste = &smmu_group->ste; in arm_smmu_install_ste_for_group()
1597 struct arm_smmu_device *smmu = smmu_group->smmu; in arm_smmu_install_ste_for_group()
1608 for (i = 0; i < smmu_group->num_sids; ++i) { in arm_smmu_install_ste_for_group()
1609 u32 sid = smmu_group->sids[i]; in arm_smmu_install_ste_for_group()
1623 struct arm_smmu_group *smmu_group = arm_smmu_group_get(dev); in arm_smmu_attach_dev() local
1625 if (!smmu_group) in arm_smmu_attach_dev()
1629 if (smmu_group->domain && smmu_group->domain != smmu_domain) in arm_smmu_attach_dev()
1632 smmu = smmu_group->smmu; in arm_smmu_attach_dev()
1652 if (smmu_group->domain) in arm_smmu_attach_dev()
1655 smmu_group->domain = smmu_domain; in arm_smmu_attach_dev()
1656 smmu_group->ste.bypass = false; in arm_smmu_attach_dev()
1658 ret = arm_smmu_install_ste_for_group(smmu_group); in arm_smmu_attach_dev()
1660 smmu_group->domain = NULL; in arm_smmu_attach_dev()
1670 struct arm_smmu_group *smmu_group = arm_smmu_group_get(dev); in arm_smmu_detach_dev() local
1673 BUG_ON(!smmu_group); in arm_smmu_detach_dev()
1676 BUG_ON(smmu_group->domain != smmu_domain); in arm_smmu_detach_dev()
1678 smmu_group->ste.bypass = true; in arm_smmu_detach_dev()
1679 if (IS_ERR_VALUE(arm_smmu_install_ste_for_group(smmu_group))) in arm_smmu_detach_dev()
1682 smmu_group->domain = NULL; in arm_smmu_detach_dev()
1790 struct arm_smmu_group *smmu_group; in arm_smmu_add_device() local
1802 smmu_group = iommu_group_get_iommudata(group); in arm_smmu_add_device()
1803 if (!smmu_group) { in arm_smmu_add_device()
1810 smmu_group = kzalloc(sizeof(*smmu_group), GFP_KERNEL); in arm_smmu_add_device()
1811 if (!smmu_group) { in arm_smmu_add_device()
1816 smmu_group->ste.valid = true; in arm_smmu_add_device()
1817 smmu_group->smmu = smmu; in arm_smmu_add_device()
1818 iommu_group_set_iommudata(group, smmu_group, in arm_smmu_add_device()
1821 smmu = smmu_group->smmu; in arm_smmu_add_device()
1826 for (i = 0; i < smmu_group->num_sids; ++i) { in arm_smmu_add_device()
1828 if (smmu_group->sids[i] == sid) in arm_smmu_add_device()
1846 smmu_group->num_sids++; in arm_smmu_add_device()
1847 sids = krealloc(smmu_group->sids, smmu_group->num_sids * sizeof(*sids), in arm_smmu_add_device()
1850 smmu_group->num_sids--; in arm_smmu_add_device()
1856 sids[smmu_group->num_sids - 1] = sid; in arm_smmu_add_device()
1857 smmu_group->sids = sids; in arm_smmu_add_device()