18.10.2022 09:13, Jon Hunter пишет: > > On 06/10/2022 16:27, Robin Murphy wrote: >> On 2022-10-06 15:01, Jon Hunter wrote: >>> Hi Robin, >>> >>> On 15/08/2022 17:20, Robin Murphy wrote: >>>> Move the bus setup to iommu_device_register(). This should allow >>>> bus_iommu_probe() to be correctly replayed for multiple IOMMU >>>> instances, >>>> and leaves bus_set_iommu() as a glorified no-op to be cleaned up next. >>>> >>>> At this point we can also handle cleanup better than just rolling back >>>> the most-recently-touched bus upon failure - which may release devices >>>> owned by other already-registered instances, and still leave devices on >>>> other buses with dangling pointers to the failed instance. Now it's >>>> easy >>>> to clean up the exact footprint of a given instance, no more, no less. >>> >>> >>> Since this change, I have noticed that the DRM driver on Tegra20 is >>> failing to probe and I am seeing ... >>> >>> tegra-gr2d 54140000.gr2d: failed to attach to domain: -19 >>> drm drm: failed to initialize 54140000.gr2d: -19 >>> >>> Bisect points to this change and reverting it fixes it. Let me know >>> if you have any thoughts. >> >> Oh, apparently what's happened is that I've inadvertently enabled the >> tegra-gart driver, since it seems that *wasn't* calling >> bus_set_iommu() before. Looking at the history, it appears to have >> been that way since c7e3ca515e78 ("iommu/tegra: gart: Do not register >> with bus"), so essentially that driver has been broken and useless for >> close to 8 years now :( >> >> Given that, I'd be inclined to "fix" it as below, or just give up and >> delete the whole thing. >> >> Thanks, >> Robin. >> >> ----->8----- >> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig >> index 5c5cb5bee8b6..7b3f7fd6e527 100644 >> --- a/drivers/iommu/Kconfig >> +++ b/drivers/iommu/Kconfig >> @@ -230,6 +230,7 @@ config TEGRA_IOMMU_GART >> bool "Tegra GART IOMMU Support" >> depends on ARCH_TEGRA_2x_SOC >> depends on TEGRA_MC >> + depends on BROKEN >> select IOMMU_API >> help >> Enables support for remapping discontiguous physical memory > > > Thanks Robin. This works for me. > > Thierry, Dmitry, we need a fix for v6.1 and so OK with the above? To me it is more a problem of the DRM driver that it doesn't support GART. GART will require a special handling from the DRM driver anyways [1]. [1] https://github.com/grate-driver/linux/blob/master/drivers/gpu/drm/grate/drm.c#L460 The GART driver itself isn't broken, it's working perfectly fine. It's the DRM driver that should start caring about the GART presence, IMO.