devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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

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).