Messages in this thread | | | From | Wan ZongShun <> | Date | Fri, 8 Jan 2016 09:44:40 +0800 | Subject | Re: [PATCH 6/6] iommu/amd: Manage iommu_group for non-pci devices |
| |
2016-01-07 20:06 GMT+08:00 Joerg Roedel <joro@8bytes.org>: > On Tue, Jan 05, 2016 at 05:07:24AM -0500, Wan Zongshun wrote: >> +static struct iommu_group *amd_iommu_device_group(struct device *dev) >> +{ >> + if (dev_is_pci(dev)) >> + return pci_device_group(dev); >> + >> + return acpihid_device_group(dev); >> +} >> + >> /***************************************************************************** >> * >> * The next functions belong to the dma_ops mapping/unmapping code. >> @@ -3202,7 +3233,7 @@ static const struct iommu_ops amd_iommu_ops = { >> .iova_to_phys = amd_iommu_iova_to_phys, >> .add_device = amd_iommu_add_device, >> .remove_device = amd_iommu_remove_device, >> - .device_group = pci_device_group, >> + .device_group = amd_iommu_device_group, > > Does this work? Which bus do the ACPIHID devices belong to (what does > dev->bus point to)? If it is not &pci_bus_type, then the iommu core code > will not create an iommu group for the devices.
Yes, it works, we have already done validation on AMD platform. Please refer to my previous patch : [PATCH] iommu/amd: set AMD iommu-callbacks for the amba bus.
Currently, The UART DMA is the use case of ACPIHID device, the dev->bus is amba_bus, so I add bus_set_iommu for this bus type.
We will do create iommu group in acpihid_device_group which will call generic_device_group to alloc group.
> > > Joerg > > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu
-- --- Vincent Wan(Zongshun) www.mcuos.com
| |