]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
iommu: Validate device tree node in dev_iommu_enable
authorPeng Fan <peng.fan@nxp.com>
Tue, 10 Feb 2026 08:12:16 +0000 (16:12 +0800)
committerTom Rini <trini@konsulko.com>
Thu, 26 Feb 2026 15:04:46 +0000 (09:04 -0600)
Similar to pinctrl_select_state(), add dev_has_ofnode() check before doing the
real work. Device(scmi_base.0) does not have a real device node, ofnode_null()
is assigned as the device tree node for scmi base protocol device:
'commit 7eb4eb541c14 ("firmware: scmi: install base protocol to SCMI agent")'

However with recent update in
'commit 0535e46d55d7 ("scripts/dtc: Update to upstream version v1.7.2-35-g52f07dcca47c")',
SPL panic in fdt_check_node_offset_()->fdt_next_tag(), because offset is -1
and SPL_OF_LIBFDT_ASSUME_MASK is 0xFF.

So need to validate device tree node.

Reported-by: Ye Li <ye.li@nxp.com>
Closes: https://lore.kernel.org/u-boot/939a9696-27fa-45a1-b428-feffe21ac6d5@oss.nxp.com/
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/iommu/iommu-uclass.c

index bb31cd519d25d163bea32c1f4e0df58f6acb6129..31b40e5713aeab37ad0bf27bed7add8defafd711 100644 (file)
@@ -79,6 +79,9 @@ int dev_iommu_enable(struct udevice *dev)
        const struct iommu_ops *ops;
        int i, count, ret = 0;
 
+       if (!dev_has_ofnode(dev))
+               return 0;
+
        count = dev_count_phandle_with_args(dev, "iommus",
                                            "#iommu-cells", 0);
        for (i = 0; i < count; i++) {