Commit bcb81ac6ae3c ("iommu: Get DT/ACPI parsing into the proper probe path") broke virtio-iommu probing and no iommu group are produced anymore. When probe_iommu_group() gets called viommu_probe_device() fails because viommu_get_by_fwnode(fwspec->iommu_fwnode) returns NULL. So it seems we need to restore the original iommu_probe_device call site in acpi_iommu_configure_id() to get a chance to probe the device again. Maybe this defeats the whole purpose of the original commit but at least it fixes the virtio-iommu probing. Fixes: bcb81ac6ae3c ("iommu: Get DT/ACPI parsing into the proper probe path") Cc: stable@xxxxxxxxxxxxxxx # v6.15+ Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> --- I also tested smmu probing and this seems to work fine. --- drivers/acpi/scan.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index fb1fe9f3b1a3..9f4efa8f75a6 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1632,6 +1632,13 @@ static int acpi_iommu_configure_id(struct device *dev, const u32 *id_in) err = viot_iommu_configure(dev); mutex_unlock(&iommu_probe_device_lock); + /* + * If we have reason to believe the IOMMU driver missed the initial + * iommu_probe_device() call for dev, replay it to get things in order. + */ + if (!err && dev->bus) + err = iommu_probe_device(dev); + return err; } -- 2.49.0