diff mbox series

[RESEND,PATCHv2,1/2] ARM: dts: ti: add support for building Texas Instruments specific overlays

Message ID 1536049651-10206-2-git-send-email-t-kristo@ti.com (mailing list archive)
State New, archived
Headers show
Series ARM: dts: TI: add support for TI SoC overlays | expand

Commit Message

Tero Kristo Sept. 4, 2018, 8:27 a.m. UTC
Add support for TI specific DT subdir, along with support for building
DT overlays. Right now, no DT files are specified in this directory,
those are to be added later.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 arch/arm/boot/dts/Makefile    | 1 +
 arch/arm/boot/dts/ti/Makefile | 9 +++++++++
 2 files changed, 10 insertions(+)
 create mode 100644 arch/arm/boot/dts/ti/Makefile

Comments

Frank Rowand Sept. 5, 2018, 8:52 p.m. UTC | #1
On 09/04/18 01:27, Tero Kristo wrote:
> Add support for TI specific DT subdir, along with support for building
> DT overlays. Right now, no DT files are specified in this directory,
> those are to be added later.
> 
> Signed-off-by: Tero Kristo <t-kristo@ti.com>
> ---
>  arch/arm/boot/dts/Makefile    | 1 +
>  arch/arm/boot/dts/ti/Makefile | 9 +++++++++
>  2 files changed, 10 insertions(+)
>  create mode 100644 arch/arm/boot/dts/ti/Makefile
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index b5bd3de..59a4b63 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -755,6 +755,7 @@ dtb-$(CONFIG_SOC_DRA7XX) += \
>  	dra72-evm-revc.dtb \
>  	dra71-evm.dtb \
>  	dra76-evm.dtb
> +subdir-$(CONFIG_SOC_DRA7XX) += ti
>  dtb-$(CONFIG_ARCH_ORION5X) += \
>  	orion5x-kuroboxpro.dtb \
>  	orion5x-lacie-d2-network.dtb \

My memory of previous discussion of creating subdirectories beneath
arch/arm/boot/dts/ has faded.  Or maybe such discussion never occurred.

Maybe Rob or someone else has a memory of such discussion.  If they don't
chime in with a pointer, can you search for that discussion?  And if it
occurred, what the general consensus was, and why it never was implemented?


> diff --git a/arch/arm/boot/dts/ti/Makefile b/arch/arm/boot/dts/ti/Makefile
> new file mode 100644
> index 0000000..e0203ba
> --- /dev/null
> +++ b/arch/arm/boot/dts/ti/Makefile
> @@ -0,0 +1,9 @@
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# Make file to build device tree binaries for boards based on
> +# Texas Instruments Inc processors
> +#
> +# Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/
> +#
> +
> +DTC_FLAGS += -@
> 

I will nack any attempt to unconditionally compile a devicetree file with the
-@ flag (which adds symbols to the resulting .dtb).  The resulting overhead
is not acceptable.

Adding the symbols must be under the control of the person either creating
or using the .dtb.  The way to provide that control is the challenging part.

One way would be to configure the compile option via kbuild configuration.
There is opposition to this approach because it makes the .dtb dependent
on the Linux kernel configuration.  So suggestions of an alternative
mechanism would be welcome.

Another _possible_ solution would be to add a dtc_strip tool to the dtc
project.  dtc_strip would remove the symbol information from a .dtb,
in a manner that is analogous to strip removing debug information from
a program file.

One aspect of unconditionally building a .dtb with symbols, then
optionally removing the symbols with dtc_strip is that it seems
like a backwards process.  For example, we don't build the kernel
with debug symbols then strip the symbols out when we don't want
them.  I'll have to mull this over if the dtc_strip method sounds
like a good approach to other people.
Geert Uytterhoeven Sept. 6, 2018, 9:36 p.m. UTC | #2
Hi Frank,

On Wed, Sep 5, 2018 at 10:54 PM Frank Rowand <frowand.list@gmail.com> wrote:
> On 09/04/18 01:27, Tero Kristo wrote:
> > Add support for TI specific DT subdir, along with support for building
> > DT overlays. Right now, no DT files are specified in this directory,
> > those are to be added later.
> >
> > Signed-off-by: Tero Kristo <t-kristo@ti.com>

> > --- /dev/null
> > +++ b/arch/arm/boot/dts/ti/Makefile
> > @@ -0,0 +1,9 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +#
> > +# Make file to build device tree binaries for boards based on
> > +# Texas Instruments Inc processors
> > +#
> > +# Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/
> > +#
> > +
> > +DTC_FLAGS += -@
> >
>
> I will nack any attempt to unconditionally compile a devicetree file with the
> -@ flag (which adds symbols to the resulting .dtb).  The resulting overhead
> is not acceptable.
>
> Adding the symbols must be under the control of the person either creating
> or using the .dtb.  The way to provide that control is the challenging part.
>
> One way would be to configure the compile option via kbuild configuration.
> There is opposition to this approach because it makes the .dtb dependent
> on the Linux kernel configuration.  So suggestions of an alternative
> mechanism would be welcome.

IMHO that would be quite a "soft" dependency: it's just about adding symbols
or not. No real dependency on Linux or kernel features.

> Another _possible_ solution would be to add a dtc_strip tool to the dtc
> project.  dtc_strip would remove the symbol information from a .dtb,
> in a manner that is analogous to strip removing debug information from
> a program file.

Removing unwanted symbols is indeed easier than adding them to an
existing DTB.

> One aspect of unconditionally building a .dtb with symbols, then
> optionally removing the symbols with dtc_strip is that it seems
> like a backwards process.  For example, we don't build the kernel
> with debug symbols then strip the symbols out when we don't want
> them.  I'll have to mull this over if the dtc_strip method sounds
> like a good approach to other people.

That's not a fair comparison: DTB symbols are not debug information,
but an ABI. It's more akin to exporting kernel symbols to (possible
out-of-tree) kernel modules, which is controlled by CONFIG_MODULES.

So a Kconfig symbol to enable it, and a dtc_strip for removing them,
makes most sense to me.

BTW, we do run strip on vmlinux ;-)

Gr{oetje,eeting}s,

                        Geert
Tero Kristo Sept. 27, 2018, 11:49 a.m. UTC | #3
Hey,

I think this topic has went stale, but I believe I figured out a way to 
work with overlays at the moment.

Basically involves couple of steps:

1) Save the overlay source files under existing file folders, and use 
the same .dts file type for them as for typical DT source files.
2) Use "make DTC_FLAGS=-@ dtbs" to compile everything, or some variant 
of this (if want to compile single file for example.) Basically need to 
add that DTC_FLAGS build flag only.

So, the question is, is this acceptable approach? Can we start posting 
overlay files for upstream to pick up, with the /plugin/ directive 
within the files, and use .dts as their file type?

All the patches I posted so far just attempted to make the system more 
maintainable (read: more readable for human beings, with the .dt*o file 
types, separated folders for the DTC_FLAGS and everything), but it seems 
it should be possible to live without any of that.

-Tero

On 07/09/18 00:36, Geert Uytterhoeven wrote:
> Hi Frank,
> 
> On Wed, Sep 5, 2018 at 10:54 PM Frank Rowand <frowand.list@gmail.com> wrote:
>> On 09/04/18 01:27, Tero Kristo wrote:
>>> Add support for TI specific DT subdir, along with support for building
>>> DT overlays. Right now, no DT files are specified in this directory,
>>> those are to be added later.
>>>
>>> Signed-off-by: Tero Kristo <t-kristo@ti.com>
> 
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/ti/Makefile
>>> @@ -0,0 +1,9 @@
>>> +# SPDX-License-Identifier: GPL-2.0
>>> +#
>>> +# Make file to build device tree binaries for boards based on
>>> +# Texas Instruments Inc processors
>>> +#
>>> +# Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/
>>> +#
>>> +
>>> +DTC_FLAGS += -@
>>>
>>
>> I will nack any attempt to unconditionally compile a devicetree file with the
>> -@ flag (which adds symbols to the resulting .dtb).  The resulting overhead
>> is not acceptable.
>>
>> Adding the symbols must be under the control of the person either creating
>> or using the .dtb.  The way to provide that control is the challenging part.
>>
>> One way would be to configure the compile option via kbuild configuration.
>> There is opposition to this approach because it makes the .dtb dependent
>> on the Linux kernel configuration.  So suggestions of an alternative
>> mechanism would be welcome.
> 
> IMHO that would be quite a "soft" dependency: it's just about adding symbols
> or not. No real dependency on Linux or kernel features.
> 
>> Another _possible_ solution would be to add a dtc_strip tool to the dtc
>> project.  dtc_strip would remove the symbol information from a .dtb,
>> in a manner that is analogous to strip removing debug information from
>> a program file.
> 
> Removing unwanted symbols is indeed easier than adding them to an
> existing DTB.
> 
>> One aspect of unconditionally building a .dtb with symbols, then
>> optionally removing the symbols with dtc_strip is that it seems
>> like a backwards process.  For example, we don't build the kernel
>> with debug symbols then strip the symbols out when we don't want
>> them.  I'll have to mull this over if the dtc_strip method sounds
>> like a good approach to other people.
> 
> That's not a fair comparison: DTB symbols are not debug information,
> but an ABI. It's more akin to exporting kernel symbols to (possible
> out-of-tree) kernel modules, which is controlled by CONFIG_MODULES.
> 
> So a Kconfig symbol to enable it, and a dtc_strip for removing them,
> makes most sense to me.
> 
> BTW, we do run strip on vmlinux ;-)
> 
> Gr{oetje,eeting}s,
> 
>                          Geert
> 

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b5bd3de..59a4b63 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -755,6 +755,7 @@  dtb-$(CONFIG_SOC_DRA7XX) += \
 	dra72-evm-revc.dtb \
 	dra71-evm.dtb \
 	dra76-evm.dtb
+subdir-$(CONFIG_SOC_DRA7XX) += ti
 dtb-$(CONFIG_ARCH_ORION5X) += \
 	orion5x-kuroboxpro.dtb \
 	orion5x-lacie-d2-network.dtb \
diff --git a/arch/arm/boot/dts/ti/Makefile b/arch/arm/boot/dts/ti/Makefile
new file mode 100644
index 0000000..e0203ba
--- /dev/null
+++ b/arch/arm/boot/dts/ti/Makefile
@@ -0,0 +1,9 @@ 
+# SPDX-License-Identifier: GPL-2.0
+#
+# Make file to build device tree binaries for boards based on
+# Texas Instruments Inc processors
+#
+# Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+
+DTC_FLAGS += -@