diff options
author | Rob Herring (Arm) <robh@kernel.org> | 2025-01-10 22:50:28 +0100 |
---|---|---|
committer | Rob Herring (Arm) <robh@kernel.org> | 2025-01-12 22:31:47 +0100 |
commit | 44748065ed321041db6e18cdcaa8c2a9554768ac (patch) | |
tree | 72b698f5932b2463e53f0f1212fee5936bd03165 /drivers/of | |
parent | of: Add coreboot firmware to excluded default cells list (diff) | |
download | linux-44748065ed321041db6e18cdcaa8c2a9554768ac.tar.xz linux-44748065ed321041db6e18cdcaa8c2a9554768ac.zip |
of/unittest: Add test that of_address_to_resource() fails on non-translatable address
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>
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/unittest-data/tests-platform.dtsi | 13 | ||||
-rw-r--r-- | drivers/of/unittest.c | 14 |
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/of/unittest-data/tests-platform.dtsi b/drivers/of/unittest-data/tests-platform.dtsi index fa39611071b3..cd310b26b50c 100644 --- a/drivers/of/unittest-data/tests-platform.dtsi +++ b/drivers/of/unittest-data/tests-platform.dtsi @@ -34,5 +34,18 @@ }; }; }; + + 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>; + }; + }; + }; }; }; diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index 80483e38d7b4..34c957add8b9 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -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 { |