[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240918045431.607826-1-masahiroy@kernel.org>
Date: Wed, 18 Sep 2024 13:52:43 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Michal Simek <monstr@...str.eu>,
linux-kernel@...r.kernel.org
Cc: Masahiro Yamada <masahiroy@...nel.org>
Subject: [PATCH] microblaze: use the common infrastructure to support built-in DTB
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>
---
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
Powered by blists - more mailing lists