[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNARJrLA2fC1Jdj+xK8yZk_Y_Xb6MwxqWM_9CTEQjJiZXZg@mail.gmail.com>
Date: Thu, 7 Nov 2024 01:50:12 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Michal Simek <monstr@...str.eu>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] microblaze: use the common infrastructure to support
built-in DTB
On Wed, Sep 18, 2024 at 1:54 PM Masahiro Yamada <masahiroy@...nel.org> wrote:
>
> MicroBlaze is the only architecture that supports a built-in DTB in
> its own way.
>
> Other architectures (e.g., ARC, NIOS2, RISC-V, etc.) use the common
> infrastructure introduced by commit aab94339cd85 ("of: Add support for
> linking device tree blobs into vmlinux").
>
> This commit migrates MicroBlaze to this common infrastructure.
>
> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> ---
Ping?
>
> I do not know why MicroBlaze still adopts its own way.
> Perhaps, because MicroBlaze supports the built-in DTB
> before aab94339cd85 and nobody attempted migration.
> Anyway, I only compile-tested this patch.
> I hope the maintainer can do boot-testing.
>
> arch/microblaze/boot/Makefile | 3 +--
> arch/microblaze/boot/dts/Makefile | 5 +----
> arch/microblaze/boot/dts/linked_dtb.S | 2 --
> arch/microblaze/include/asm/sections.h | 2 --
> arch/microblaze/kernel/head.S | 2 +-
> arch/microblaze/kernel/setup.c | 4 ++--
> arch/microblaze/kernel/vmlinux.lds.S | 8 --------
> 7 files changed, 5 insertions(+), 21 deletions(-)
> delete mode 100644 arch/microblaze/boot/dts/linked_dtb.S
>
> diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
> index 2b42c370d574..23a48e090f93 100644
> --- a/arch/microblaze/boot/Makefile
> +++ b/arch/microblaze/boot/Makefile
> @@ -17,8 +17,7 @@ $(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
> $(call if_changed,gzip)
>
> quiet_cmd_strip = STRIP $< $@$2
> - cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
> - -K _fdt_start $< -o $@$2
> + cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf $< -o $@$2
>
> UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
>
> diff --git a/arch/microblaze/boot/dts/Makefile b/arch/microblaze/boot/dts/Makefile
> index b84e2cbb20ee..f168a127bf94 100644
> --- a/arch/microblaze/boot/dts/Makefile
> +++ b/arch/microblaze/boot/dts/Makefile
> @@ -4,10 +4,7 @@
> dtb-y := system.dtb
>
> ifneq ($(DTB),)
> -obj-y += linked_dtb.o
> -
> -# Ensure system.dtb exists
> -$(obj)/linked_dtb.o: $(obj)/system.dtb
> +obj-y += system.dtb.o
>
> # Generate system.dtb from $(DTB).dtb
> ifneq ($(DTB),system)
> 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/include/asm/sections.h b/arch/microblaze/include/asm/sections.h
> index a9311ad84a67..6bc4855757c3 100644
> --- a/arch/microblaze/include/asm/sections.h
> +++ b/arch/microblaze/include/asm/sections.h
> @@ -14,7 +14,5 @@
> extern char _ssbss[], _esbss[];
> extern unsigned long __ivt_start[], __ivt_end[];
>
> -extern u32 _fdt_start[], _fdt_end[];
> -
> # endif /* !__ASSEMBLY__ */
> #endif /* _ASM_MICROBLAZE_SECTIONS_H */
> diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
> index ec2fcb545e64..9727aa1934df 100644
> --- a/arch/microblaze/kernel/head.S
> +++ b/arch/microblaze/kernel/head.S
> @@ -95,7 +95,7 @@ big_endian:
> bnei r11, no_fdt_arg /* No - get out of here */
> _prepare_copy_fdt:
> or r11, r0, r0 /* incremment */
> - ori r4, r0, TOPHYS(_fdt_start)
> + ori r4, r0, TOPHYS(__dtb_start)
> ori r3, r0, (0x10000 - 4)
> _copy_fdt:
> lw r12, r7, r11 /* r12 = r7 + r11 */
> diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
> index f417333eccae..8e57b490ca9c 100644
> --- a/arch/microblaze/kernel/setup.c
> +++ b/arch/microblaze/kernel/setup.c
> @@ -120,7 +120,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram,
> memset(_ssbss, 0, _esbss-_ssbss);
>
> /* initialize device tree for usage in early_printk */
> - early_init_devtree(_fdt_start);
> + early_init_devtree(__dtb_start);
>
> /* setup kernel_tlb after BSS cleaning
> * Maybe worth to move to asm code */
> @@ -132,7 +132,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram,
> if (fdt)
> pr_info("FDT at 0x%08x\n", fdt);
> else
> - pr_info("Compiled-in FDT at %p\n", _fdt_start);
> + pr_info("Compiled-in FDT at %p\n", __dtb_start);
>
> #ifdef CONFIG_MTD_UCLINUX
> pr_info("Found romfs @ 0x%08x (0x%08x)\n",
> diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
> index ae50d3d04a7d..3d4a78aa9ab4 100644
> --- a/arch/microblaze/kernel/vmlinux.lds.S
> +++ b/arch/microblaze/kernel/vmlinux.lds.S
> @@ -44,14 +44,6 @@ SECTIONS {
> _etext = . ;
> }
>
> - . = ALIGN (8) ;
> - __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) {
> - _fdt_start = . ; /* place for fdt blob */
> - *(__fdt_blob) ; /* Any link-placed DTB */
> - . = _fdt_start + 0x10000; /* Pad up to 64kbyte */
> - _fdt_end = . ;
> - }
> -
> . = ALIGN(16);
> RO_DATA(4096)
>
> --
> 2.43.0
>
--
Best Regards
Masahiro Yamada
Powered by blists - more mailing lists