Re: [PATCH] microblaze: migrate to the generic rule for built-in DTB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 8, 2025 at 1:37 AM Michal Simek <michal.simek@xxxxxxx> wrote:
>
> Hi Masahiro,
>
> On 12/22/24 10:46, Masahiro Yamada wrote:
> > Commit 654102df2ac2 ("kbuild: add generic support for built-in boot
> > DTBs") introduced generic support for built-in DTBs.
> >
> > Select GENERIC_BUILTIN_DTB to use the generic rule.
> >
> > MicroBlaze is the only architecture that places the built-in DTB to its
> > own section, __fdt_blob, rather than the standard location defined by
> > the KERNEL_DTB() macro.
> >
> > For backward compatibility, arch/microblaze/boot/dts/system.dtb is still
> > placed in the __fdt_blob section, and possibly overwritten by an externel
> > DTB passed via the r7 register.
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
> > ---
> >
> >   arch/microblaze/Kbuild                | 1 -
> >   arch/microblaze/Kconfig               | 5 +++++
> >   arch/microblaze/boot/dts/Makefile     | 5 -----
> >   arch/microblaze/boot/dts/linked_dtb.S | 2 --
> >   arch/microblaze/kernel/vmlinux.lds.S  | 2 +-
> >   5 files changed, 6 insertions(+), 9 deletions(-)
> >   delete mode 100644 arch/microblaze/boot/dts/linked_dtb.S
> >
> > diff --git a/arch/microblaze/Kbuild b/arch/microblaze/Kbuild
> > index 077a0b8e9615..70510389eb92 100644
> > --- a/arch/microblaze/Kbuild
> > +++ b/arch/microblaze/Kbuild
> > @@ -2,7 +2,6 @@
> >   obj-y                       += kernel/
> >   obj-y                       += mm/
> >   obj-$(CONFIG_PCI)   += pci/
> > -obj-y                        += boot/dts/
> >
> >   # for cleaning
> >   subdir- += boot
> > diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
> > index f18ec02ddeb2..4ed8ca89f0c9 100644
> > --- a/arch/microblaze/Kconfig
> > +++ b/arch/microblaze/Kconfig
> > @@ -10,6 +10,7 @@ config MICROBLAZE
> >       select ARCH_MIGHT_HAVE_PC_PARPORT
> >       select ARCH_WANT_IPC_PARSE_VERSION
> >       select BUILDTIME_TABLE_SORT
> > +     select GENERIC_BUILTIN_DTB
> >       select TIMER_OF
> >       select CLONE_BACKWARDS3
> >       select COMMON_CLK
> > @@ -47,6 +48,10 @@ config MICROBLAZE
> >       select TRACE_IRQFLAGS_SUPPORT
> >       select GENERIC_IRQ_MULTI_HANDLER
> >
> > +config BUILTIN_DTB_NAME
> > +     string
> > +     default "system"
> > +
> >   # Endianness selection
> >   choice
> >       prompt "Endianness selection"
> > diff --git a/arch/microblaze/boot/dts/Makefile b/arch/microblaze/boot/dts/Makefile
> > index b84e2cbb20ee..87c1d25ff096 100644
> > --- a/arch/microblaze/boot/dts/Makefile
> > +++ b/arch/microblaze/boot/dts/Makefile
> > @@ -4,11 +4,6 @@
> >   dtb-y := system.dtb
> >
> >   ifneq ($(DTB),)
> > -obj-y += linked_dtb.o
> > -
> > -# Ensure system.dtb exists
> > -$(obj)/linked_dtb.o: $(obj)/system.dtb
> > -
> >   # Generate system.dtb from $(DTB).dtb
> >   ifneq ($(DTB),system)
> >   $(obj)/system.dtb: $(obj)/$(DTB).dtb
> > diff --git a/arch/microblaze/boot/dts/linked_dtb.S b/arch/microblaze/boot/dts/linked_dtb.S
> > deleted file mode 100644
> > index 23345af3721f..000000000000
> > --- a/arch/microblaze/boot/dts/linked_dtb.S
> > +++ /dev/null
> > @@ -1,2 +0,0 @@
> > -.section __fdt_blob,"a"
> > -.incbin "arch/microblaze/boot/dts/system.dtb"
> > diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
> > index ae50d3d04a7d..e86f9ca8e979 100644
> > --- a/arch/microblaze/kernel/vmlinux.lds.S
> > +++ b/arch/microblaze/kernel/vmlinux.lds.S
> > @@ -47,7 +47,7 @@ SECTIONS {
> >       . = ALIGN (8) ;
> >       __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) {
> >               _fdt_start = . ;                /* place for fdt blob */
> > -             *(__fdt_blob) ;                 /* Any link-placed DTB */
> > +             *(.dtb.init.rodata) ;           /* Any link-placed DTB */
> >               . = _fdt_start + 0x10000;       /* Pad up to 64kbyte */
> >               _fdt_end = . ;
> >       }
>
> This patch is better then previous one but still it is changing behavior of
> build. When this patch is applied linux.bin contains dtb which is not the same
> behavior as before (which was empty).
> DTB should be filled when simpleImage.<dt> is built.

Why is it a problem?

Microblaze always keeps 64kbyte space in case
an external DTB is passed from a boot-loader.

Even if the default system.dtb is placed there,
nothing is wasted.


One more thing, Microblaze is only the architecture
that determines the built-in DTB by the command line.

I do not think it is a sensible way.

    $ make linux.bin simpleImage.foo
      --> linux.bin also contains the builtin device tree

    $ make simpleImage.foo simpleImage.bar
      --> does not work


All other architectures determinantes the built-in DTB
by CONFIG option.


-- 
Best Regards
Masahiro Yamada





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux