[PATCH] arm64: dts: renesas: r8a78000: Describe all reserved memory
Geert Uytterhoeven
geert at linux-m68k.org
Mon May 18 00:18:16 PDT 2026
Hi Marek,
On Sun, 17 May 2026 at 18:32, Marek Vasut
<marek.vasut+renesas at mailbox.org> wrote:
> Fully describe all available DRAM in the DT, and describe regions which
> are not accessible because they are used by firmware in reserved-memory
> node.
>
> Replace first memory bank memory at 60600000 with memory at 40000000 and a
> 518 MiB long reserved-memory no-map subnode. This memory region is used
> by other cores in the system.
>
> Reserve 32 kiB of memory at 0x8c100000 for parameters shared by IPL,
> SCP, TFA BL31 and TEE.
>
> Reserve 512 kiB of memory at 0x8c200000 for TFA BL31. The upcoming
> upstream TFA 2.15 BL31 uses memory from 0x8c200000..0x8c242fff, the
> round up to 512 kiB is slight future proofing.
>
> Reserve 32 MiB of memory at 0x8c400000 for OPTEE-OS, which is the
> entire OPTEE-OS TZ protected DRAM area.
>
> Neither the TFA BL31 nor OPTEE-OS do modify the DT passed to Linux in
> any way with any new reserved-memory {} node to reserve memory areas
> used by the TFA BL31 or OPTEE-OS to prevent the next stage from using
> those areas, which lets Linux use all of the available DRAM as it is
> described in the DT that was passed in by U-Boot, including the areas
> that are newly utilized by TFA BL31 or OPTEE-OS.
>
> In case of high DRAM utilization, unless the memory used by TFA BL31
> or OPTEE-OS is properly reserved, Linux may use and corrupt the memory
> used by TFA BL31 or OPTEE-OS, which would lead to the system becoming
> unresponsive.
>
> Fixes: ad142a4ef710 ("arm64: dts: renesas: r8a78000: Add initial Ironhide board support")
> Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
Thanks for your patch!
> --- a/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts
> +++ b/arch/arm64/boot/dts/renesas/r8a78000-ironhide.dts
> @@ -20,10 +20,9 @@ chosen {
> stdout-path = "serial0:1843200n8";
> };
>
> - memory at 60600000 {
> + memory at 40000000 {
> device_type = "memory";
> - /* first 518MiB is reserved for other purposes. */
> - reg = <0x0 0x60600000 0x0 0x5fa00000>;
> + reg = <0x0 0x40000000 0x0 0x80000000>;
> };
>
> memory at 1080000000 {
> @@ -65,6 +64,36 @@ memory at 1e00000000 {
> device_type = "memory";
> reg = <0x1e 0x00000000 0x1 0x00000000>;
> };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + /* First 518 MiB is reserved for other purposes. */
> + firmware at 40000000 {
> + reg = <0x0 0x40000000 0x0 0x20600000>;
> + no-map;
> + };
> +
> + /* Parameters set by IPL. */
> + parameters at 8c100000 {
> + reg = <0x0 0x8c100000 0x0 0x00008000>;
> + no-map;
> + };
> +
> + /* TFA BL31. */
> + tfa-bl31 at 8c200000 {
> + reg = <0x0 0x8c200000 0x0 0x00080000>;
> + no-map;
> + };
> +
> + /* TEE TZ DRAM. */
> + tee at 8c400000 {
> + reg = <0x0 0x8c400000 0x0 0x02000000>;
> + no-map;
> + };
> + };
Shouldn't these reservations be added by the bootloader stack, when
passing the DTB to Linux?
> };
>
> &extal_clk {
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
More information about the linux-arm-kernel
mailing list