From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Tue, 10 Nov 2015 21:01:10 +0800 Subject: [U-Boot] [PATCH V4 1/3] arm: discard relocation entries for secure text In-Reply-To: <20151030082345.GA7963@shlinux2> References: <1445566385-15129-1-git-send-email-Peng.Fan@freescale.com> <20151030082345.GA7963@shlinux2> Message-ID: <20151110130106.GA11557@shlinux2> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Fri, Oct 30, 2015 at 04:23:49PM +0800, Peng Fan wrote: >Hi Albert, > >Are you fine with this patch? > >I'd like the patch go through i.MX tree, since the other two patches >needs this patch to work. Ping.. Thanks, Peng. > >Thanks, >Peng. > >On Fri, Oct 23, 2015 at 10:13:03AM +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 >> >> > >-- --