From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Wed, 11 Nov 2015 18:05:55 +0100 Subject: [U-Boot] [PATCH V4 1/3] arm: discard relocation entries for secure text In-Reply-To: <20151111011421.GA12906@shlinux2> References: <1445566385-15129-1-git-send-email-Peng.Fan@freescale.com> <20151110141410.0a1484ef@lilith> <20151111011421.GA12906@shlinux2> Message-ID: <56437573.6080806@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 11/11/2015 02:14, Peng Fan wrote: > Hi Stefano, > > On Tue, Nov 10, 2015 at 02:14:10PM +0100, Albert ARIBAUD wrote: >> 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 >> > > Can you please take a look at the patch set and merge? I'll do Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================