Re: [PATCH] ARM: boot: Fix ATAGs with appended DTB
From: Marek Szyprowski <m.szyprowski@samsung.com>
Date: 2020-02-26 06:35:51
Also in:
linux-renesas-soc, lkml
Hi Geert, On 25.02.2020 15:47, Geert Uytterhoeven wrote:
At early boot, register r8 may contain an ATAGs or DTB pointer.
When an appended DTB is found, its address is stored in r8, for
extraction of the RAM base address later.
However, if r8 contained an ATAGs pointer before, that pointer will be
lost, and the provided ATAGs is no longer folded into the provided DTB.
Fix this by leaving r8 untouched.
Fixes: 137e522593918be2 ("ARM: 8960/1: boot: Obtain start of physical memory from DTB")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Not tested with ATAGs, only with [uz]Image + DTB, and zImage with
appended DTB.Works fine with zImage + appended DTB + cmdline/memory info passed via ATAGs Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
quoted hunk ↗ jump to hunk
--- arch/arm/boot/compressed/head.S | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 339d4b4cfbbeed15..a351ed2bc195ed8d 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S@@ -267,16 +267,18 @@ not_angel: cmp r0, r1 @ do we have a DTB there? bne 1f - mov r8, r6 @ use it if so /* preserve 64-bit alignment */ add r5, r5, #7 bic r5, r5, #7 - add sp, sp, r5 @ and move stack above it + add sp, sp, r5 @ if so, move stack above DTB + mov r0, r6 @ and extract memory start from DTB + b 2f 1: #endif /* CONFIG_ARM_APPENDED_DTB */ mov r0, r8 +2: bl fdt_get_mem_start mov r4, r0 cmp r0, #-1
Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel