Lines Matching full:viommu
49 struct viot_iommu *viommu; member
78 static int __init viot_get_pci_iommu_fwnode(struct viot_iommu *viommu, in viot_get_pci_iommu_fwnode() argument
104 viommu->fwnode = pdev->dev.fwnode; in viot_get_pci_iommu_fwnode()
109 static int __init viot_get_mmio_iommu_fwnode(struct viot_iommu *viommu, in viot_get_mmio_iommu_fwnode() argument
124 viommu->fwnode = &adev->fwnode; in viot_get_mmio_iommu_fwnode()
131 struct viot_iommu *viommu; in viot_get_iommu() local
139 list_for_each_entry(viommu, &viot_iommus, list) in viot_get_iommu()
140 if (viommu->offset == offset) in viot_get_iommu()
141 return viommu; in viot_get_iommu()
146 viommu = kzalloc(sizeof(*viommu), GFP_KERNEL); in viot_get_iommu()
147 if (!viommu) in viot_get_iommu()
150 viommu->offset = offset; in viot_get_iommu()
156 ret = viot_get_pci_iommu_fwnode(viommu, node->pci.segment, in viot_get_iommu()
163 ret = viot_get_mmio_iommu_fwnode(viommu, in viot_get_iommu()
172 list_add(&viommu->list, &viot_iommus); in viot_get_iommu()
173 return viommu; in viot_get_iommu()
176 kfree(viommu); in viot_get_iommu()
213 ep->viommu = viot_get_iommu(node->pci.output_node); in viot_parse_node()
224 ep->viommu = viot_get_iommu(node->mmio.output_node); in viot_parse_node()
233 if (!ep->viommu) { in viot_parse_node()
288 static int viot_dev_iommu_init(struct device *dev, struct viot_iommu *viommu, in viot_dev_iommu_init() argument
293 if (!viommu) in viot_dev_iommu_init()
297 if (viommu->fwnode == dev->fwnode) in viot_dev_iommu_init()
300 ops = iommu_ops_from_fwnode(viommu->fwnode); in viot_dev_iommu_init()
305 return acpi_iommu_fwspec_init(dev, epid, viommu->fwnode, ops); in viot_dev_iommu_init()
323 * If we found a PCI range managed by the viommu, we're in viot_pci_dev_iommu_init()
328 return viot_dev_iommu_init(&pdev->dev, ep->viommu, in viot_pci_dev_iommu_init()
346 return viot_dev_iommu_init(&pdev->dev, ep->viommu, in viot_mmio_dev_iommu_init()