Maunik Patel
Maunik Patel

Reputation: 1

Linux kernel can't perform relocation for the hardware with ARM Cortex-A78

Linux Kernel Version: 5.1.39 and above
Tool chain:
gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux (for Linux compilation)
gcc-linaro-aarch64-none-elf-4.9-2014.09_linux. (for Boot code compilation)

Platform:
a hardware system with an ARM Cortex-A78 core, an interconnect, a DDR-DRAM and an UART-16550 only

Question:
We are trying to boot the Linux kernel on this hardware system.
The bootcode is provided by ARM and modified by us.

It performs below mentioned tasks:

After the control is transferred to the Linux kernel, kernel performs predefined tasks mentioned in its ./arch/arm64/kernel/head.S file.
To track the execution, we print an alphabet from the head.S file itself, after some lines of execution.
From this, we found that the code gets stuck, after it branches to __relocate_kernel label. In particular, it stuck when it tries to load some value from a memory address.

If we disable the relocation from menuconfig, it show same behavior once it reaches "set_task_stack_end_magic()" in ./init/main.c

We can't figure out why exactly this issue is appearing?
Can anyone help us out here?
Feel free if you require further information as well to give suggestions.

Thank you

Upvotes: 0

Views: 300

Answers (0)

Related Questions