Hi Jonas, On Sun, 7 Jan 2024 at 17:35, Jonas Karlman <jo...@kwiboo.se> wrote: > > Hi Hugh, > > On 2023-12-26 17:43, Hugh Cole-Baker wrote: > > An uncompressed 6.7.0-rc1 Linux kernel Image built with the arm64 > > defconfig is about 40MB. This does not fit in to the space between > > kernel_comp_addr_r and fdt_addr_r, so when uncompressing an Image.gz > > to this size, the FDT will be overwritten. Rearrange addresses to have > > 128MiB for the kernel and its decompression buffer, then devicetree, > > overlay and ramdisk at the end. > > > > Signed-off-by: Hugh Cole-Baker <sigma...@gmail.com> > > --- > > Changes from v1: > > Reorder things to have to have 128MiB for kernel and decompression space, > > then devicetree, overlays and ramdisk. > > Update kernel_comp_size to 128MiB. > > > > include/configs/rk3568_common.h | 12 ++++++------ > > include/configs/rk3588_common.h | 12 ++++++------ > > 2 files changed, 12 insertions(+), 12 deletions(-) > > > > diff --git a/include/configs/rk3568_common.h > > b/include/configs/rk3568_common.h > > index 1b7d3437b1..48f93083de 100644 > > --- a/include/configs/rk3568_common.h > > +++ b/include/configs/rk3568_common.h > > @@ -20,12 +20,12 @@ > > "script_offset_f=0xffe000\0" \ > > "script_size_f=0x2000\0" \ > > "pxefile_addr_r=0x00e00000\0" \ > > - "fdt_addr_r=0x0a100000\0" \ > > - "fdtoverlay_addr_r=0x02000000\0" \ > > - "kernel_addr_r=0x02080000\0" \ > > - "ramdisk_addr_r=0x0a200000\0" \ > > - "kernel_comp_addr_r=0x08000000\0" \ > > - "kernel_comp_size=0x2000000\0" > > + "kernel_addr_r=0x02000000\0" \ > > + "kernel_comp_addr_r=0x0a000000\0" \ > > + "fdt_addr_r=0x12000000\0" \ > > + "fdtoverlay_addr_r=0x12100000\0" \ > > + "ramdisk_addr_r=0x12180000\0" \ > > + "kernel_comp_size=0x8000000\0" > > This (and the prior) memory layout extend over the possible memory > region that OPTEE may use, 32 MiB at 132 MiB offset. > > The following regions is typically reserved for TF-A and OPTEE: > > 0x00000000 - 0x00200000 - reserved for TF-A, pstore, shmem, etc (0-2 MiB) > 0x08400000 - 0x0a400000 - reserved for OPTEE (132-164 MiB)
Thanks, I wasn't aware of this reserved memory. Out of curiosity, is it documented anywhere more about this & how to use OPTEE on RK3588? I'd like to try it out, I tried to simply include it in a U-Boot build via "export TEE=rk3588_bl32_v1.13.bin" but binman expects the given file to be an ELF. > > Following offsets are used by U-Boot on rockchip rk35xx: > > @0 - U-Boot SPL > @40000 - TF-A (@256 KiB) > @a00000 - U-Boot proper (@10 MiB) > @c00000 - scriptaddr (@12 MiB) > @c00800 - loadaddr (@12 MiB + 2 KiB) > @e00000 - pxefile_addr_r (@14 MiB) > @8400000 - optional OPTEE (@132 MiB) > > May I suggest a memory layout similar to the following be used: > > @1800000 - fdtoverlay_addr_r (@24 MiB) > @1c00000 - fdt_addr_r (@28 MiB) > @2000000 - kernel_addr_r (@32 MiB) > @a800000 - kernel_comp_addr_r (@168 MiB) // could also be a400000 (@164 MiB) > @12c00000 - ramdisk_addr_r (@300 MiB) // kernel_comp_addr_r + kernel_comp_size > and kernel_comp_size = 0x8000000 (128 MiB) > > With that it should allow for a 100-136 MiB kernel starting at @32 MiB, > depending on if memory is reserved for OPTEE or not. It also leave 4 MiB > for FDT and FDT overlay in memory just before the kernel. And finally do > not overlap kernel_comp_addr_r with possible OPTEE memory. > > If we need more space then 2 MiB for U-Boot proper we should also > revise the offsets used for loadaddr, scriptaddr and pxefile_addr_r. > > Regards, > Jonas > > > > > #define CFG_EXTRA_ENV_SETTINGS \ > > ENV_MEM_LAYOUT_SETTINGS \ > > diff --git a/include/configs/rk3588_common.h > > b/include/configs/rk3588_common.h > > index 46389d087d..70430612ef 100644 > > --- a/include/configs/rk3588_common.h > > +++ b/include/configs/rk3588_common.h > > @@ -19,12 +19,12 @@ > > "script_offset_f=0xffe000\0" \ > > "script_size_f=0x2000\0" \ > > "pxefile_addr_r=0x00e00000\0" \ > > - "fdt_addr_r=0x0a100000\0" \ > > - "fdtoverlay_addr_r=0x02000000\0" \ > > - "kernel_addr_r=0x02080000\0" \ > > - "ramdisk_addr_r=0x0a200000\0" \ > > - "kernel_comp_addr_r=0x08000000\0" \ > > - "kernel_comp_size=0x2000000\0" > > + "kernel_addr_r=0x02000000\0" \ > > + "kernel_comp_addr_r=0x0a000000\0" \ > > + "fdt_addr_r=0x12000000\0" \ > > + "fdtoverlay_addr_r=0x12100000\0" \ > > + "ramdisk_addr_r=0x12180000\0" \ > > + "kernel_comp_size=0x8000000\0" > > > > #define CFG_EXTRA_ENV_SETTINGS \ > > "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ Regards, Hugh