[meta-freescale] [PATCH] linux-qoriq: fix the kernel hang issue with gcc-5.2

Zhenhua Luo zhenhua.luo at freescale.com
Mon Nov 9 21:53:48 PST 2015


Backport a patch to fix the kernel hang issue when the uImage is built
by gcc-5.2.

The details can be found in
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5e95235

Signed-off-by: Zhenhua Luo <zhenhua.luo at freescale.com>
(backported from meta-fsl-ppc:95d9f9aba81ccdae53011ac8c6fbbc2605b9cedc)
---
 .../0001-powerpc-Align-TOC-to-256-bytes.patch      | 37 ++++++++++++++++++++++
 recipes-kernel/linux/linux-qoriq_3.12.bb           |  1 +
 2 files changed, 38 insertions(+)
 create mode 100644 recipes-kernel/linux/linux-qoriq/0001-powerpc-Align-TOC-to-256-bytes.patch

diff --git a/recipes-kernel/linux/linux-qoriq/0001-powerpc-Align-TOC-to-256-bytes.patch b/recipes-kernel/linux/linux-qoriq/0001-powerpc-Align-TOC-to-256-bytes.patch
new file mode 100644
index 0000000..2131c9d
--- /dev/null
+++ b/recipes-kernel/linux/linux-qoriq/0001-powerpc-Align-TOC-to-256-bytes.patch
@@ -0,0 +1,37 @@
+From 7d4d16a6ccdd6d965b84284262a67d5b63426d50 Mon Sep 17 00:00:00 2001
+From: Zhenhua Luo <zhenhua.luo at freescale.com>
+Date: Mon, 9 Nov 2015 04:36:29 -0600
+Subject: [PATCH] powerpc: Align TOC to 256 bytes
+
+Recent toolchains(gcc-5.2) force the TOC to be 256 byte aligned. We need
+to enforce this alignment in our linker script, otherwise pointers
+to our TOC variables (__toc_start, __prom_init_toc_start) could
+be incorrect.
+
+If they are bad, we die a few hundred instructions into boot.
+
+Upstream-Status: Backport
+
+Backport from https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5e95235
+
+Signed-off-by: Zhenhua Luo <zhenhua.luo at freescale.com>
+---
+ arch/powerpc/kernel/vmlinux.lds.S | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
+index f096e72..3266864 100644
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -213,6 +213,8 @@ SECTIONS
+ 		*(.opd)
+ 	}
+ 
++	. = ALIGN(256);
++
+ 	.got : AT(ADDR(.got) - LOAD_OFFSET) {
+ 		__toc_start = .;
+ #ifndef CONFIG_RELOCATABLE
+-- 
+2.3.3
+
diff --git a/recipes-kernel/linux/linux-qoriq_3.12.bb b/recipes-kernel/linux/linux-qoriq_3.12.bb
index 1d973cd..23a2e00 100644
--- a/recipes-kernel/linux/linux-qoriq_3.12.bb
+++ b/recipes-kernel/linux/linux-qoriq_3.12.bb
@@ -6,6 +6,7 @@ SRC_URI = "git://git.freescale.com/ppc/sdk/linux.git;nobranch=1 \
     file://0001-ARM-8158-LLVMLinux-use-static-inline-in-ARM-ftrace.patch \
     file://0001-ARM-LLVMLinux-Change-extern-inline-to-static-inline.patch \
     file://0003-use-static-inline-in-ARM-lifeboot.h.patch \
+    file://0001-powerpc-Align-TOC-to-256-bytes.patch \
 "
 
 SRCREV = "f488de6741d5ba805b9fe813d2ddf32368d3a888"
-- 
2.5.0



More information about the meta-freescale mailing list