rockchip: add text_offset to kernel_addr_r on aarch64 platforms
authorKlaus Goger <klaus.goger@theobroma-systems.com>
Mon, 19 Feb 2018 07:02:26 +0000 (08:02 +0100)
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Tue, 13 Mar 2018 17:12:35 +0000 (18:12 +0100)
Booting a aarch64 Linux kernel requires the image to be placed
text_offset bytes from a 2MB aligned address.
See https://www.kernel.org/doc/Documentation/arm64/booting.txt

booti_setup() takes care about this alignment and will relocate the
image if not properly aligned with memmove(). This can require up
to double the size of the loaded image and therefore accidentally
overwrite content placed there (i.e ramdisk_addr_r) for large kernel
images.

By adding text_offset to the default kernel_addr_r we can prevent that
from happening for kernels larger 18MB and also save a few cycles.

We can assume a text_offset of 0x80000 for most cases, all others will be
handled by booti_setup() anyway.

Signed-off-by: Klaus Goger <klaus.goger@theobroma-systems.com>
Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
include/configs/rk3328_common.h
include/configs/rk3399_common.h

index 7018668e00fd514edf4495b5468e66d4920aa606..517d058a111043f6cfc2bb811e935c1dfc06e02d 100644 (file)
@@ -42,7 +42,7 @@
        "scriptaddr=0x00500000\0" \
        "pxefile_addr_r=0x00600000\0" \
        "fdt_addr_r=0x01f00000\0" \
-       "kernel_addr_r=0x02000000\0" \
+       "kernel_addr_r=0x02080000\0" \
        "ramdisk_addr_r=0x04000000\0"
 
 #include <config_distro_bootcmd.h>
index d700bf2549716d5698510b94b174690f786745c4..8582252dc306b85477ec71187c5088441703ec67 100644 (file)
@@ -53,7 +53,7 @@
        "scriptaddr=0x00500000\0" \
        "pxefile_addr_r=0x00600000\0" \
        "fdt_addr_r=0x01f00000\0" \
-       "kernel_addr_r=0x02000000\0" \
+       "kernel_addr_r=0x02080000\0" \
        "ramdisk_addr_r=0x04000000\0"
 
 #include <config_distro_bootcmd.h>