]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: RIMT: Add dependency between iommu and devices
authorSunil V L <sunilvl@oss.qualcomm.com>
Tue, 3 Mar 2026 06:16:05 +0000 (11:46 +0530)
committerPaul Walmsley <pjw@kernel.org>
Sun, 5 Apr 2026 00:38:03 +0000 (18:38 -0600)
EPROBE_DEFER ensures IOMMU devices are probed before the devices that
depend on them. During shutdown, however, the IOMMU may be removed
first, leading to issues. To avoid this, a device link is added
which enforces the correct removal order.

Fixes: 8f7729552582 ("ACPI: RISC-V: Add support for RIMT")
Signed-off-by: Sunil V L <sunilvl@oss.qualcomm.com>
Link: https://patch.msgid.link/20260303061605.722949-1-sunilvl@oss.qualcomm.com
Signed-off-by: Paul Walmsley <pjw@kernel.org>
drivers/acpi/riscv/rimt.c

index 229c4a0d47a3ffb522bba0e0ab4b8246d8c3c1fa..906282b0e63c0cf431d07ef1737dfd57abfb8ffd 100644 (file)
@@ -263,6 +263,13 @@ static int rimt_iommu_xlate(struct device *dev, struct acpi_rimt_node *node, u32
        if (!rimt_fwnode)
                return -EPROBE_DEFER;
 
+       /*
+        * EPROBE_DEFER ensures IOMMU is probed before the devices that
+        * depend on them. During shutdown, however, the IOMMU may be removed
+        * first, leading to issues. To avoid this, a device link is added
+        * which enforces the correct removal order.
+        */
+       device_link_add(dev, rimt_fwnode->dev, DL_FLAG_AUTOREMOVE_CONSUMER);
        return acpi_iommu_fwspec_init(dev, deviceid, rimt_fwnode);
 }