Hi Simon,

On 8/8/2026 7:35 PM, Simon Glass wrote:
> Hi Jonas,
> 
> On 2026-08-03T19:09:38, Jonas Karlman <[email protected]> wrote:
>> rockchip: rk3506: Update ENV_MEM_LAYOUT_SETTINGS
>>
>> The RK3506G1 has 64 MiB integrated DDR2, the RK3506G2 has 128 MiB
>> integrated DDR3 and the RK3506B support external memory up to 1 GiB.
> 
>> Change the default load addresses to also work on SoC variants with
>> limited memory, keep all default addresses in the 0-64 MiB range.
> 
> The addresses fit in 0-64 MiB, but kernel_comp_addr_r (48 MiB) +
> kernel_comp_size (32 MiB) reaches 80 MiB, past the end of DDR on the
> RK3506G1. Does this need separate values for each SoC ?

Please enlighten me on when kernel_comp_addr_r will be used when booting
ARMv7, I normally use zImage so the kernel handles decompression.

I do not think there is a big issue for normal operation, and users
likely have to adjust these values to fit their specific use-case.

The main issue this tries to solve is having decent space for a kernel
and a small ramdisk on these low memory devices. And my thinking is
that if you need a large kernel, you likely also need an variant having
more memory.

> 
>>
>> Current memory layout cause issues using compressed kernels or ramdisk
>> due to the default load addresses being used.
>>
>> Change the default load addresses to also work on SoC variants with
>> limited memory, keep all default addresses in the 0-64 MiB range.
>>
>>                          old             new
>>   scriptaddr            5 MiB           2 MiB
>>   pxefile_addr_r        6 MiB           1 MiB
>>   kernel_addr_r         32.5 MiB        8 MiB
>>   kernel_comp_addr_r    128 MiB         48 MiB
>>   fdt_addr_r            30.5 MiB        4 MiB
>>   fdtoverlay_addr_r     31.5 MiB        6 MiB
>>   ramdisk_addr_r        96 MiB          48 MiB
>>
>> [...]
>>
>> include/configs/rk3506_common.h | 14 +++++++-------
>>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
>> diff --git a/include/configs/rk3506_common.h 
>> b/include/configs/rk3506_common.h
>> @@ -18,15 +18,15 @@
>> -     "kernel_comp_addr_r=0x08000000\0"       \
>> -     "ramdisk_addr_r=0x06000000\0"           \
>> +     "kernel_comp_addr_r=0x03000000\0"       \
>> +     "ramdisk_addr_r=0x03000000\0"           \
>>       "kernel_comp_size=0x2000000\0"
> 
> kernel_comp_addr_r and ramdisk_addr_r are both at 0x03000000, so
> decompression will scribble over an already-loaded ramdisk. Every
> other rockchip *_common.h keeps these apart. Please can you space them
> so the kernel_comp window (0x03000000 + kernel_comp_size = 0x05000000)
> does not overlap the ramdisk?

Based on my testing the kernel will normally be loaded and decompressed
before the ramdisk is loaded, so having the addresses overlap seems to
be working fine.

Regards,
Jonas

> 
> Regards,
> Simon

Reply via email to