Hi,Thank you for your reply. Do you mean it should be changed as follows:
On 19. 11. 20 2:40, Youling Tang wrote:
Use the common INIT_DATA_SECTION rule for the linker script in an effortThanks for the patch but I can't accept it because recently we found
to regularize the linker script.
Signed-off-by: Youling Tang <tangyouling@xxxxxxxxxxx>
---
arch/microblaze/kernel/vmlinux.lds.S | 24 +-----------------------
1 file changed, 1 insertion(+), 23 deletions(-)
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
index df07b3d..527ebfc 100644
--- a/arch/microblaze/kernel/vmlinux.lds.S
+++ b/arch/microblaze/kernel/vmlinux.lds.S
@@ -96,10 +96,7 @@ SECTIONS {
__init_begin = .;
INIT_TEXT_SECTION(PAGE_SIZE)
-
- .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
- INIT_DATA
- }
+ INIT_DATA_SECTION(0)
. = ALIGN(4);
.init.ivt : AT(ADDR(.init.ivt) - LOAD_OFFSET) {
@@ -107,25 +104,6 @@ SECTIONS {
*(.init.ivt)
__ivt_end = .;
}
-
- .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
- INIT_SETUP(0)
- }
-
- .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET ) {
- INIT_CALLS
- }
-
- .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
- CON_INITCALL
- }
-
- __init_end_before_initramfs = .;
-
- .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
- INIT_RAM_FS
- }
-
__init_end = .;
.bss ALIGN (PAGE_SIZE) : AT(ADDR(.bss) - LOAD_OFFSET) {
that there needs to be some resorting in linker to be able to boot.
The issue is that INIT_RAMFS_FS section is text/data/init and bss.
But because microblaze in early code is using two TLBs (16M) each for
early mapping and you have big initramfs bss section is unreachable.
That's why these sections needs to be swapped.
Maybe bss section can be moved up before INIT_DATA_SECTION maybe even
before INIT_TEXT_SECTION and we should be fine.
Thanks,
Michal