From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Tue, 10 Nov 2015 14:14:10 +0100 Subject: [U-Boot] [PATCH V4 1/3] arm: discard relocation entries for secure text In-Reply-To: <1445566385-15129-1-git-send-email-Peng.Fan@freescale.com> References: <1445566385-15129-1-git-send-email-Peng.Fan@freescale.com> Message-ID: <20151110141410.0a1484ef@lilith> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Peng, On Fri, 23 Oct 2015 10:13:03 +0800, Peng Fan wrote: > The code such as PSCI in section named secure is bundled with > u-boot image, and when bootm, the code will be copied to their > runtime address same to compliation/linking address - > CONFIG_ARMV7_SECURE_BASE. > > When compile the PSCI code and link it into the u-boot image, > there will be relocation entries in .rel.dyn section for PSCI. > Actually, we do not needs these relocation entries. > > If still keep the relocation entries in .rel.dyn section, > r0 at line 103 and 106 in arch/arm/lib/relocate.S may be an invalid > address which may not support read/write for one SoC. > 102 /* relative fix: increase location by offset */ > 103 add r0, r0, r4 > 104 ldr r1, [r0] > 105 add r1, r1, r4 > 106 str r1, [r0] > > So discard them to avoid touching the relocation entry in > arch/arm/lib/relocate.S. > > Signed-off-by: Peng Fan > Cc: Tom Warren > Cc: York Sun > Cc: Hans De Goede > Cc: Ian Campbell > Cc: Albert Aribaud > Cc: Tom Rini > Cc: Jan Kiszka > Cc: Stefano Babic > --- > > Changes v4: > none > > V2 thread: http://lists.denx.de/pipermail/u-boot/2015-October/230755.html > Changes v3: > Move the relocation entries to the very begining and discard them. > > V1 thread: http://lists.denx.de/pipermail/u-boot/2015-October/229426.html > Changes V2: > Refine commit msg. > Discard the relocation entry section for secure text. > > arch/arm/cpu/u-boot.lds | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds > index 03cd9f6..d48a905 100644 > --- a/arch/arm/cpu/u-boot.lds > +++ b/arch/arm/cpu/u-boot.lds > @@ -14,6 +14,23 @@ OUTPUT_ARCH(arm) > ENTRY(_start) > SECTIONS > { > + /* > + * Discard the relocation entries for secure text. > + * The secure code is bundled with u-boot image, so there will > + * be relocations entries for the secure code, since we use > + * "-mword-relocations" to compile and "-pie" to link into the > + * final image. We do not need the relocation entries for secure > + * code, because secure code will not be relocated, it only needs > + * to be copied from loading address to CONFIG_ARMV7_SECURE_BASE, > + * which is the linking and running address for secure code. > + * If keep the relocation entries in .rel.dyn section, > + * "relocation offset + linking address" may locates into an > + * address that is reserved by SoC, then will trigger data abort. > + * > + * The reason that move .rel._secure at the beginning, is to > + * avoid hole in the final image. > + */ > + /DISCARD/ : { *(.rel._secure*) } > . = 0x00000000; > > . = ALIGN(4); > -- > 1.8.4 > > Acked-by: Albert ARIBAUD Amicalement, -- Albert.