]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
of/unittest: Add test that of_address_to_resource() fails on non-translatable address
authorRob Herring (Arm) <robh@kernel.org>
Fri, 10 Jan 2025 21:50:28 +0000 (15:50 -0600)
committerRob Herring (Arm) <robh@kernel.org>
Sun, 12 Jan 2025 21:31:47 +0000 (15:31 -0600)
of_address_to_resource() on a non-translatable address should return an
error. Additionally, this case also triggers a spurious WARN for
missing #address-cells/#size-cells.

Link: https://lore.kernel.org/r/20250110215030.3637845-1-robh@kernel.org
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
drivers/of/unittest-data/tests-platform.dtsi
drivers/of/unittest.c

index fa39611071b32f44fcc9bd3b4916006bfab57828..cd310b26b50c811dbfe3526cf8994d18f9926aa8 100644 (file)
                                };
                        };
                };
+
+               platform-tests-2 {
+                       // No #address-cells or #size-cells
+                       node {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               test-device@100 {
+                                       compatible = "test-sub-device";
+                                       reg = <0x100 1>;
+                               };
+                       };
+               };
        };
 };
index 80483e38d7b4d2388cf8dfa004fe94a79fc1dca8..34c957add8b95cbcdf538e6bea385644014d3a20 100644 (file)
@@ -1380,6 +1380,7 @@ static void __init of_unittest_bus_3cell_ranges(void)
 static void __init of_unittest_reg(void)
 {
        struct device_node *np;
+       struct resource res;
        int ret;
        u64 addr, size;
 
@@ -1396,6 +1397,19 @@ static void __init of_unittest_reg(void)
                np, addr);
 
        of_node_put(np);
+
+       np = of_find_node_by_path("/testcase-data/platform-tests-2/node/test-device@100");
+       if (!np) {
+               pr_err("missing testcase data\n");
+               return;
+       }
+
+       ret = of_address_to_resource(np, 0, &res);
+       unittest(ret == -EINVAL, "of_address_to_resource(%pOF) expected error on untranslatable address\n",
+                np);
+
+       of_node_put(np);
+
 }
 
 struct of_unittest_expected_res {