Hi Robin, > Am 25.10.2024 um 16:27 schrieb Robin Murphy <robin.murphy@xxxxxxx>: > > On 08/10/2024 8:52 pm, H. Nikolaus Schaller wrote: >>> Am 08.10.2024 um 20:20 schrieb Robin Murphy <robin.murphy@xxxxxxx>: >>>> The -ETIMEDOUT seems to come from of_iommu_configure(). >>> >>> Oof, yeah, now we've wound up with the opposite problem that because it's the generic "iommus" binding, it gets as far as of_iommu_xlate() but now the NULL fwnode no longer matches the phandle target so that thinks it's waiting for an instance which hasn't registered yet :( >>> >>> OK, different track, does the diff below fare any better? (I've not written it up fully yet as the DRA7 special cases will need some more work still) >>> >>> Thanks, >>> Robin. >>> >>> ----->8----- >>> >>> diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c >>> index c9528065a59a..44e09d60e861 100644 >>> --- a/drivers/iommu/omap-iommu.c >>> +++ b/drivers/iommu/omap-iommu.c >>> @@ -1723,12 +1723,19 @@ static void omap_iommu_release_device(struct device *dev) >>> >>> } >>> >>> +int omap_iommu_of_xlate(struct device *dev, const struct of_phandle_args *args) >>> +{ >>> + /* TODO: collect args->np to save re-parsing in probe above */ >>> + return 0; >>> +} >>> + >>> static const struct iommu_ops omap_iommu_ops = { >>> .identity_domain = &omap_iommu_identity_domain, >>> .domain_alloc_paging = omap_iommu_domain_alloc_paging, >>> .probe_device = omap_iommu_probe_device, >>> .release_device = omap_iommu_release_device, >>> .device_group = generic_single_device_group, >>> + .of_xlate = omap_iommu_of_xlate, >>> .pgsize_bitmap = OMAP_IOMMU_PGSIZES, >>> .default_domain_ops = &(const struct iommu_domain_ops) { >>> .attach_dev = omap_iommu_attach_dev, >> Unfortunately no change :( > > Hmm, I dug around and found a Pandaboard in the cupboard, and ostensibly this seems to work as expected there: Oh, fine! I did not yet think about cross-checking with my PandaES (because I have no camera connected). > > 6:12-rc3: > chu-chu-rocket:~ # dmesg | grep -i iommu > [ 0.628601] iommu: Default domain type: Translated > [ 0.633575] iommu: DMA domain TLB invalidation policy: strict mode > [ 1.636047] omap-iommu 4a066000.mmu: 4a066000.mmu registered > [ 3.265869] omap-iommu 55082000.mmu: 55082000.mmu registered > > 6.12-rc3 + of_xlate: > chu-chu-rocket:~ # dmesg | grep -i iommu > [ 0.629577] iommu: Default domain type: Translated > [ 0.634582] iommu: DMA domain TLB invalidation policy: strict mode > [ 1.622802] omap-iommu 4a066000.mmu: 4a066000.mmu registered > [ 3.316009] omap-iommu 55082000.mmu: 55082000.mmu registered > [ 3.329040] omap-rproc ocp:dsp: Adding to iommu group 0 > [ 3.335083] omap-iommu 4a066000.mmu: 4a066000.mmu: version 2.0 > [ 3.356506] omap-rproc 55020000.ipu: Adding to iommu group 1 > [ 3.362396] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1 > > Guess I'm going to have to dig further for an OMAP3 to figure out what additional shenanigans that ISP driver is up to... :/ I don't have much time for this issue at the moment but will try to get new insights. BR, Nikolaus