linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] SRAM dt binding and fix
@ 2023-04-20 21:17 Linus Walleij
  2023-04-20 21:17 ` [PATCH v2 1/2] dt-bindings: sram: Add compatible for ST-Ericsson U8500 eSRAM Linus Walleij
  2023-04-20 21:17 ` [PATCH v2 2/2] misc: sram: Generate unique names for subpools Linus Walleij
  0 siblings, 2 replies; 6+ messages in thread
From: Linus Walleij @ 2023-04-20 21:17 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Arnd Bergmann, Greg Kroah-Hartman
  Cc: Rob Herring, devicetree, linux-kernel, Linus Walleij

This adds a DT binding for the U8500 SRAMs.

This patch series also fixes an issue with pool labels that I
saw on U8500.

I suppose SRAM patches will go in through the SoC tree, I kind
of feel that SRAM is a SoC concept and the driver should
actually be in drivers/soc...

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
Changes in v2:
- Change to just use dev_name() for naming the SRAM partition
  when no label is passed.
- Link to v1: https://lore.kernel.org/r/20230417-ux500-sram-v1-0-5924988bb835@linaro.org

---
Linus Walleij (2):
      dt-bindings: sram: Add compatible for ST-Ericsson U8500 eSRAM
      misc: sram: Generate unique names for subpools

 Documentation/devicetree/bindings/sram/sram.yaml | 1 +
 drivers/misc/sram.c                              | 9 +++++----
 2 files changed, 6 insertions(+), 4 deletions(-)
---
base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
change-id: 20230417-ux500-sram-961796726db4

Best regards,
-- 
Linus Walleij <linus.walleij@linaro.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] dt-bindings: sram: Add compatible for ST-Ericsson U8500 eSRAM
  2023-04-20 21:17 [PATCH v2 0/2] SRAM dt binding and fix Linus Walleij
@ 2023-04-20 21:17 ` Linus Walleij
  2023-04-20 21:17 ` [PATCH v2 2/2] misc: sram: Generate unique names for subpools Linus Walleij
  1 sibling, 0 replies; 6+ messages in thread
From: Linus Walleij @ 2023-04-20 21:17 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Arnd Bergmann, Greg Kroah-Hartman
  Cc: Rob Herring, devicetree, linux-kernel, Linus Walleij

This adds an SoC-specific binding for the banks of eSRAM
available in the ST-Ericsson U8500.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 Documentation/devicetree/bindings/sram/sram.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/sram/sram.yaml b/Documentation/devicetree/bindings/sram/sram.yaml
index 993430be355b..0922d1f71ba8 100644
--- a/Documentation/devicetree/bindings/sram/sram.yaml
+++ b/Documentation/devicetree/bindings/sram/sram.yaml
@@ -94,6 +94,7 @@ patternProperties:
             - samsung,exynos4210-sysram
             - samsung,exynos4210-sysram-ns
             - socionext,milbeaut-smp-sram
+            - stericsson,u8500-esram
 
       reg:
         description:

-- 
2.40.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] misc: sram: Generate unique names for subpools
  2023-04-20 21:17 [PATCH v2 0/2] SRAM dt binding and fix Linus Walleij
  2023-04-20 21:17 ` [PATCH v2 1/2] dt-bindings: sram: Add compatible for ST-Ericsson U8500 eSRAM Linus Walleij
@ 2023-04-20 21:17 ` Linus Walleij
  2023-06-18 21:33   ` Dmitry Osipenko
  1 sibling, 1 reply; 6+ messages in thread
From: Linus Walleij @ 2023-04-20 21:17 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Arnd Bergmann, Greg Kroah-Hartman
  Cc: Rob Herring, devicetree, linux-kernel, Linus Walleij

The current code will, if we do not specify unique labels
for the SRAM subnodes, fail to register several nodes named
the same.

Example:

sram@40020000 {
  (...)
  sram@0 {
    (...)
  };
  sram@1000 {
    (...)
  };
};

Since the child->name in both cases will be "sram" the
gen_pool_create() will fail because the name is not unique.

Use dev_name() for the device as this will have bus ID
set to the fully translated address for the node, and that
will always be unique.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v1->v2:
- Stop complicating things and just use dev_name()
---
 drivers/misc/sram.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
index f0e7f02605eb..f80c3adddf0b 100644
--- a/drivers/misc/sram.c
+++ b/drivers/misc/sram.c
@@ -240,10 +240,11 @@ static int sram_reserve_regions(struct sram_dev *sram, struct resource *res)
 				goto err_chunks;
 			}
 			if (!label)
-				label = child->name;
-
-			block->label = devm_kstrdup(sram->dev,
-						    label, GFP_KERNEL);
+				block->label = devm_kasprintf(sram->dev, GFP_KERNEL,
+							      "%s", dev_name(sram->dev));
+			else
+				block->label = devm_kstrdup(sram->dev,
+							    label, GFP_KERNEL);
 			if (!block->label) {
 				ret = -ENOMEM;
 				goto err_chunks;

-- 
2.40.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] misc: sram: Generate unique names for subpools
  2023-04-20 21:17 ` [PATCH v2 2/2] misc: sram: Generate unique names for subpools Linus Walleij
@ 2023-06-18 21:33   ` Dmitry Osipenko
  2023-06-19  7:11     ` Linus Walleij
  0 siblings, 1 reply; 6+ messages in thread
From: Dmitry Osipenko @ 2023-06-18 21:33 UTC (permalink / raw)
  To: Linus Walleij, Rob Herring, Krzysztof Kozlowski, Arnd Bergmann,
	Greg Kroah-Hartman
  Cc: Rob Herring, devicetree, linux-kernel

21.04.2023 00:17, Linus Walleij пишет:
> The current code will, if we do not specify unique labels
> for the SRAM subnodes, fail to register several nodes named
> the same.
> 
> Example:
> 
> sram@40020000 {
>   (...)
>   sram@0 {
>     (...)
>   };
>   sram@1000 {
>     (...)
>   };
> };
> 
> Since the child->name in both cases will be "sram" the
> gen_pool_create() will fail because the name is not unique.
> 
> Use dev_name() for the device as this will have bus ID
> set to the fully translated address for the node, and that
> will always be unique.
> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ChangeLog v1->v2:
> - Stop complicating things and just use dev_name()
> ---
>  drivers/misc/sram.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
> index f0e7f02605eb..f80c3adddf0b 100644
> --- a/drivers/misc/sram.c
> +++ b/drivers/misc/sram.c
> @@ -240,10 +240,11 @@ static int sram_reserve_regions(struct sram_dev *sram, struct resource *res)
>  				goto err_chunks;
>  			}
>  			if (!label)
> -				label = child->name;
> -
> -			block->label = devm_kstrdup(sram->dev,
> -						    label, GFP_KERNEL);
> +				block->label = devm_kasprintf(sram->dev, GFP_KERNEL,
> +							      "%s", dev_name(sram->dev));

This broke device-trees that have no label property. The SRAM DT binding
says:

"
label:
description:
	The name for the reserved partition, if omitted, the label is taken
	from the node name excluding the unit address.
"

Not sure whether breakage was on purpose, otherwise doc needs to be
updated or there should be explicit check for the duplicated node names.

Secondly, AFAICS, the dev_name(sram->dev) is the name of the parent SRAM
device and not of the children sub-nodes, hence it's now always the same
dev_name(sram->dev) for all sub-nodes.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] misc: sram: Generate unique names for subpools
  2023-06-18 21:33   ` Dmitry Osipenko
@ 2023-06-19  7:11     ` Linus Walleij
  2023-06-20  8:23       ` Dmitry Osipenko
  0 siblings, 1 reply; 6+ messages in thread
From: Linus Walleij @ 2023-06-19  7:11 UTC (permalink / raw)
  To: Dmitry Osipenko
  Cc: Rob Herring, Krzysztof Kozlowski, Arnd Bergmann,
	Greg Kroah-Hartman, Rob Herring, devicetree, linux-kernel

On Sun, Jun 18, 2023 at 11:33 PM Dmitry Osipenko <digetx@gmail.com> wrote:

> >                       if (!label)
> > -                             label = child->name;
> > -
> > -                     block->label = devm_kstrdup(sram->dev,
> > -                                                 label, GFP_KERNEL);
> > +                             block->label = devm_kasprintf(sram->dev, GFP_KERNEL,
> > +                                                           "%s", dev_name(sram->dev));
>
> This broke device-trees that have no label property.

Which system is affected? Asking so I can inspect the DTS file
and figure out how this needs to work.

>  The SRAM DT binding says:
>
> "
> label:
> description:
>         The name for the reserved partition, if omitted, the label is taken
>         from the node name excluding the unit address.
> "
>
> Not sure whether breakage was on purpose, otherwise doc needs to be
> updated or there should be explicit check for the duplicated node names.
>
> Secondly, AFAICS, the dev_name(sram->dev) is the name of the parent SRAM
> device and not of the children sub-nodes, hence it's now always the same
> dev_name(sram->dev) for all sub-nodes.

Sounds like I should go back to the original approach in patch v1:
https://lore.kernel.org/linux-devicetree/20230417-ux500-sram-v1-2-5924988bb835@linaro.org/

and also augment the DTS binding text to say it uses the full node name
including the address.

Does that look OK to you, or will this regress your system as well?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] misc: sram: Generate unique names for subpools
  2023-06-19  7:11     ` Linus Walleij
@ 2023-06-20  8:23       ` Dmitry Osipenko
  0 siblings, 0 replies; 6+ messages in thread
From: Dmitry Osipenko @ 2023-06-20  8:23 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Rob Herring, Krzysztof Kozlowski, Arnd Bergmann,
	Greg Kroah-Hartman, Rob Herring, devicetree, linux-kernel

19.06.2023 10:11, Linus Walleij пишет:
> On Sun, Jun 18, 2023 at 11:33 PM Dmitry Osipenko <digetx@gmail.com> wrote:
> 
>>>                       if (!label)
>>> -                             label = child->name;
>>> -
>>> -                     block->label = devm_kstrdup(sram->dev,
>>> -                                                 label, GFP_KERNEL);
>>> +                             block->label = devm_kasprintf(sram->dev, GFP_KERNEL,
>>> +                                                           "%s", dev_name(sram->dev));
>>
>> This broke device-trees that have no label property.
> 
> Which system is affected? Asking so I can inspect the DTS file
> and figure out how this needs to work.

NVIDIA Tegra2/3 video decoder driver fails to probe with this change.

https://elixir.bootlin.com/linux/latest/source/drivers/media/platform/nvidia/tegra-vde/vde.c#L312

https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/tegra20.dtsi#L347

>>  The SRAM DT binding says:
>>
>> "
>> label:
>> description:
>>         The name for the reserved partition, if omitted, the label is taken
>>         from the node name excluding the unit address.
>> "
>>
>> Not sure whether breakage was on purpose, otherwise doc needs to be
>> updated or there should be explicit check for the duplicated node names.
>>
>> Secondly, AFAICS, the dev_name(sram->dev) is the name of the parent SRAM
>> device and not of the children sub-nodes, hence it's now always the same
>> dev_name(sram->dev) for all sub-nodes.
> 
> Sounds like I should go back to the original approach in patch v1:
> https://lore.kernel.org/linux-devicetree/20230417-ux500-sram-v1-2-5924988bb835@linaro.org/
> 
> and also augment the DTS binding text to say it uses the full node name
> including the address.
> 
> Does that look OK to you, or will this regress your system as well?

That may work, but then seems you'll also need to update
of_gen_pool_get() to use np_pool->full_name instead of np_pool->name.

https://elixir.bootlin.com/linux/latest/source/lib/genalloc.c#L898


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-06-20  8:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-20 21:17 [PATCH v2 0/2] SRAM dt binding and fix Linus Walleij
2023-04-20 21:17 ` [PATCH v2 1/2] dt-bindings: sram: Add compatible for ST-Ericsson U8500 eSRAM Linus Walleij
2023-04-20 21:17 ` [PATCH v2 2/2] misc: sram: Generate unique names for subpools Linus Walleij
2023-06-18 21:33   ` Dmitry Osipenko
2023-06-19  7:11     ` Linus Walleij
2023-06-20  8:23       ` Dmitry Osipenko

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