On Thu, Feb 01, 2024 at 07:35:24PM +0000, Jon Hunter wrote: > > You mean this sequence? > > > > err = device_add(&ctx->dev); > > if (err) { > > dev_err(host1x->dev, "could not add context device %d: %d\n", i, err); > > put_device(&ctx->dev); > > goto unreg_devices; > > } > > > > err = of_dma_configure_id(&ctx->dev, node, true, &i); > > if (err) { > > dev_err(host1x->dev, "IOMMU configuration failed for context device %d: %d\n", > > i, err); > > device_unregister(&ctx->dev); > > goto unreg_devices; > > } > > Yes this sequence. > > > I didn't seem an obvious place that this would get fixed up later? > > > > device_add() was done before so the iommu_device_link() shouldn't be > > failing? Are you hitting a duplicate link (ie remove the nowarn from > > iommu_device_link()) > > > Removing the '_nowarn' does appear to fix it, although it is not clear to me > why? What did you do to remove? Just the letters or the whole line? I was thinking the letters because it triggers a large debug message. But, what is the actual log output you see, is it -EEXIST? If it is coming and going is it a race of some kind? Jason