Messages in this thread | | | Subject | Re: [PATCH v1 6/8] gpu/host1x: Use iommu_attach/detach_device() | From | Lu Baolu <> | Date | Fri, 7 Jan 2022 08:35:34 +0800 |
| |
On 1/6/22 11:35 PM, Jason Gunthorpe wrote: > On Thu, Jan 06, 2022 at 10:20:51AM +0800, Lu Baolu wrote: >> Ordinary drivers should use iommu_attach/detach_device() for domain >> attaching and detaching. >> >> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> >> drivers/gpu/host1x/dev.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c >> index fbb6447b8659..6e08cb6202cc 100644 >> +++ b/drivers/gpu/host1x/dev.c >> @@ -265,7 +265,7 @@ static struct iommu_domain *host1x_iommu_attach(struct host1x *host) >> goto put_cache; >> } >> >> - err = iommu_attach_group(host->domain, host->group); >> + err = iommu_attach_device(host->domain, host->dev); >> if (err) { >> if (err == -ENODEV) >> err = 0; >> @@ -335,7 +335,7 @@ static void host1x_iommu_exit(struct host1x *host) >> { >> if (host->domain) { >> put_iova_domain(&host->iova); >> - iommu_detach_group(host->domain, host->group); >> + iommu_detach_device(host->domain, host->dev); >> >> iommu_domain_free(host->domain); >> host->domain = NULL; > > Shouldn't this add the flag to tegra_host1x_driver ?
This is called for a single driver. The call trace looks like below:
static struct platform_driver tegra_host1x_driver = { .driver = { .name = "tegra-host1x", .of_match_table = host1x_of_match, }, .probe = host1x_probe, .remove = host1x_remove, };
host1x_probe(dev) ->host1x_iommu_init(host) //host is a wrapper of dev -->host1x_iommu_attach(host) ---->iommu_group_get(host->dev) iommu_domain_alloc(&platform_bus_type) iommu_attach_group(domain, group);
It seems that the existing code only works for singleton group.
> > And do like we did in the other tegra stuff and switch to the dma api > when !host1x_wants_iommu() ? > > Jason >
Best regards, baolu
| |