* Re: [PATCH 1/2] of: Support using 'mask' in making device bus id
@ 2021-11-09 19:43 Guenter Roeck
0 siblings, 0 replies; 3+ messages in thread
From: Guenter Roeck @ 2021-11-09 19:43 UTC (permalink / raw)
To: Rob Herring
Cc: Linus Walleij, Stephen Boyd, Sudeep Holla, devicetree,
linux-arm-kernel, Lorenzo Pieralisi, linux-clk, linux-kernel,
stable, Frank Rowand
On Tue, Nov 09, 2021 at 10:46:49AM -0600, Rob Herring wrote:
> Commit 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes
> 'reg' and node names") added a 'reg' property to nodes. This change has
> the side effect of changing how the kernel generates the device name.
> The assumption was a translatable 'reg' address is unique. However, in
> the case of the register-bit-led binding (and a few others) that is not
> the case. The 'mask' property must also be used in this case to make a
> unique device name.
>
> Fixes: 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes 'reg' and node names")
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Cc: stable@vger.kernel.org
> Cc: Frank Rowand <frowand.list@gmail.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Signed-off-by: Rob Herring <robh@kernel.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
> ---
> This should be applied to stable to minimize DT ABI breakage.
> ---
> drivers/of/platform.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index 07813fb1ef37..b3faf89744aa 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -76,6 +76,7 @@ static void of_device_make_bus_id(struct device *dev)
> struct device_node *node = dev->of_node;
> const __be32 *reg;
> u64 addr;
> + u32 mask;
>
> /* Construct the name, using parent nodes if necessary to ensure uniqueness */
> while (node->parent) {
> @@ -85,8 +86,13 @@ static void of_device_make_bus_id(struct device *dev)
> */
> reg = of_get_property(node, "reg", NULL);
> if (reg && (addr = of_translate_address(node, reg)) != OF_BAD_ADDR) {
> - dev_set_name(dev, dev_name(dev) ? "%llx.%pOFn:%s" : "%llx.%pOFn",
> - addr, node, dev_name(dev));
> + if (!of_property_read_u32(node, "mask", &mask))
> + dev_set_name(dev, dev_name(dev) ? "%llx.%x.%pOFn:%s" : "%llx.%x.%pOFn",
> + addr, ffs(mask) - 1, node, dev_name(dev));
> +
> + else
> + dev_set_name(dev, dev_name(dev) ? "%llx.%pOFn:%s" : "%llx.%pOFn",
> + addr, node, dev_name(dev));
> return;
> }
>
> --
> 2.32.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 0/2] Fix Arm Ltd board node name collisions
@ 2021-11-09 16:46 Rob Herring
2021-11-09 16:46 ` [PATCH 1/2] of: Support using 'mask' in making device bus id Rob Herring
0 siblings, 1 reply; 3+ messages in thread
From: Rob Herring @ 2021-11-09 16:46 UTC (permalink / raw)
To: Linus Walleij, Stephen Boyd, Sudeep Holla
Cc: devicetree, linux-arm-kernel, Guenter Roeck, Lorenzo Pieralisi,
linux-clk, linux-kernel
The node name changes in commits 25b892b583cc ("ARM: dts: arm: Update
register-bit-led nodes 'reg' and node names") and 2d3de197a818 ("ARM:
dts: arm: Update ICST clock nodes 'reg' and node names") caused name
collisions with the kernel's handling of ICST clock names and platform
device names. This series fixes the kernel side to handle the DT
changes.
This does break DT ABI compatibility which is partially mitigated if
these changes are backported to stable. The alternative is reverting the
referenced DT changes and coming up with different node names without
unit-addresses. Ultimately, ABI issues are platform maintainers'
decision, not mine.
Rob
Rob Herring (2):
of: Support using 'mask' in making device bus id
clk: versatile: clk-icst: Ensure clock names are unique
drivers/clk/versatile/clk-icst.c | 6 ++++--
drivers/of/platform.c | 10 ++++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
--
2.32.0
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 1/2] of: Support using 'mask' in making device bus id
2021-11-09 16:46 [PATCH 0/2] Fix Arm Ltd board node name collisions Rob Herring
@ 2021-11-09 16:46 ` Rob Herring
2021-11-09 22:20 ` Linus Walleij
0 siblings, 1 reply; 3+ messages in thread
From: Rob Herring @ 2021-11-09 16:46 UTC (permalink / raw)
To: Linus Walleij, Stephen Boyd, Sudeep Holla
Cc: devicetree, linux-arm-kernel, Guenter Roeck, Lorenzo Pieralisi,
linux-clk, linux-kernel, stable, Frank Rowand
Commit 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes
'reg' and node names") added a 'reg' property to nodes. This change has
the side effect of changing how the kernel generates the device name.
The assumption was a translatable 'reg' address is unique. However, in
the case of the register-bit-led binding (and a few others) that is not
the case. The 'mask' property must also be used in this case to make a
unique device name.
Fixes: 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes 'reg' and node names")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Cc: stable@vger.kernel.org
Cc: Frank Rowand <frowand.list@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
---
This should be applied to stable to minimize DT ABI breakage.
---
drivers/of/platform.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 07813fb1ef37..b3faf89744aa 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -76,6 +76,7 @@ static void of_device_make_bus_id(struct device *dev)
struct device_node *node = dev->of_node;
const __be32 *reg;
u64 addr;
+ u32 mask;
/* Construct the name, using parent nodes if necessary to ensure uniqueness */
while (node->parent) {
@@ -85,8 +86,13 @@ static void of_device_make_bus_id(struct device *dev)
*/
reg = of_get_property(node, "reg", NULL);
if (reg && (addr = of_translate_address(node, reg)) != OF_BAD_ADDR) {
- dev_set_name(dev, dev_name(dev) ? "%llx.%pOFn:%s" : "%llx.%pOFn",
- addr, node, dev_name(dev));
+ if (!of_property_read_u32(node, "mask", &mask))
+ dev_set_name(dev, dev_name(dev) ? "%llx.%x.%pOFn:%s" : "%llx.%x.%pOFn",
+ addr, ffs(mask) - 1, node, dev_name(dev));
+
+ else
+ dev_set_name(dev, dev_name(dev) ? "%llx.%pOFn:%s" : "%llx.%pOFn",
+ addr, node, dev_name(dev));
return;
}
--
2.32.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] of: Support using 'mask' in making device bus id
2021-11-09 16:46 ` [PATCH 1/2] of: Support using 'mask' in making device bus id Rob Herring
@ 2021-11-09 22:20 ` Linus Walleij
0 siblings, 0 replies; 3+ messages in thread
From: Linus Walleij @ 2021-11-09 22:20 UTC (permalink / raw)
To: Rob Herring
Cc: Stephen Boyd, Sudeep Holla, devicetree, linux-arm-kernel,
Guenter Roeck, Lorenzo Pieralisi, linux-clk, linux-kernel, stable,
Frank Rowand
On Tue, Nov 9, 2021 at 5:46 PM Rob Herring <robh@kernel.org> wrote:
> Commit 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes
> 'reg' and node names") added a 'reg' property to nodes. This change has
> the side effect of changing how the kernel generates the device name.
> The assumption was a translatable 'reg' address is unique. However, in
> the case of the register-bit-led binding (and a few others) that is not
> the case. The 'mask' property must also be used in this case to make a
> unique device name.
>
> Fixes: 25b892b583cc ("ARM: dts: arm: Update register-bit-led nodes 'reg' and node names")
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Cc: stable@vger.kernel.org
> Cc: Frank Rowand <frowand.list@gmail.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-11-09 22:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-09 19:43 [PATCH 1/2] of: Support using 'mask' in making device bus id Guenter Roeck
-- strict thread matches above, loose matches on Subject: below --
2021-11-09 16:46 [PATCH 0/2] Fix Arm Ltd board node name collisions Rob Herring
2021-11-09 16:46 ` [PATCH 1/2] of: Support using 'mask' in making device bus id Rob Herring
2021-11-09 22:20 ` Linus Walleij
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).