summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denys@ti.com>2014-04-17 15:05:33 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-04-19 11:04:44 +0100
commit3e49cee7e88a732ae892df5e6c88c849e2785dbd (patch)
tree24ef11de53a123b9161af4c8785b0ebee9a1f378
parent0ba2239abb4917a1c090a7802211f2695c711a58 (diff)
downloadpoky-3e49cee7e88a732ae892df5e6c88c849e2785dbd.tar.gz
u-boot: fix beaglebone boot issue with large kernel images
Fix beaglebone boot issue with large kernel images overwriting Device Tree. See very detailed comments inside the patch. The original patch is being reviewed upstream and is targeting mainline U-boot version 2014.07. This is the adaptation of the patch for 2013.07 version we use (From OE-Core rev: c18b8fb9a625b5fb760c3ba53708155d3294ac6c) Signed-off-by: Denys Dmytriyenko <denys@ti.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-am335x_evm.h-Add-use-DEFAULT_LINUX_BOOT_ENV-environm.patch74
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2013.07.bb4
2 files changed, 77 insertions, 1 deletions
diff --git a/meta/recipes-bsp/u-boot/files/0001-am335x_evm.h-Add-use-DEFAULT_LINUX_BOOT_ENV-environm.patch b/meta/recipes-bsp/u-boot/files/0001-am335x_evm.h-Add-use-DEFAULT_LINUX_BOOT_ENV-environm.patch
new file mode 100644
index 0000000000..77e35bbc7c
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/0001-am335x_evm.h-Add-use-DEFAULT_LINUX_BOOT_ENV-environm.patch
@@ -0,0 +1,74 @@
1From 5701384cea4a829b772bf7a96a74825b58c22385 Mon Sep 17 00:00:00 2001
2From: Denys Dmytriyenko <denys@ti.com>
3Date: Thu, 17 Apr 2014 12:25:40 -0400
4Subject: [PATCH] am335x_evm.h: Add, use DEFAULT_LINUX_BOOT_ENV environment
5 string
6
7Modified version of the patch currently being reviewed for mainline:
8http://patchwork.ozlabs.org/patch/334861/
9
10To deal with a reoccurring problem properly we need to specify addresses
11for the Linux kernel, Flatted Device Tree and ramdisk that obey the
12constraints within the kernel's Documentation/arm/Booting file but also
13make sure that we relocate things within a valid address range.
14
15Signed-off-by: Denys Dmytriyenko <denys@ti.com>
16Signed-off-by: Tom Rini <trini@ti.com>
17
18Upstream-Status: Pending
19---
20 include/configs/am335x_evm.h | 31 ++++++++++++++++++++++++++-----
21 1 file changed, 26 insertions(+), 5 deletions(-)
22
23diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
24index c5a6d4b..01e32b3 100644
25--- a/include/configs/am335x_evm.h
26+++ b/include/configs/am335x_evm.h
27@@ -54,10 +54,7 @@
28 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
29 #ifndef CONFIG_SPL_BUILD
30 #define CONFIG_EXTRA_ENV_SETTINGS \
31- "loadaddr=0x80200000\0" \
32- "fdtaddr=0x80F80000\0" \
33- "fdt_high=0xffffffff\0" \
34- "rdaddr=0x81000000\0" \
35+ DEFAULT_LINUX_BOOT_ENV \
36 "bootdir=/boot\0" \
37 "bootfile=uImage\0" \
38 "fdtfile=undefined\0" \
39@@ -197,7 +194,31 @@
40 #define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \
41 + (8 * 1024 * 1024))
42
43-#define CONFIG_SYS_LOAD_ADDR 0x81000000 /* Default load address */
44+/*
45+ * Our DDR memory always starts at 0x80000000 and U-Boot shall have
46+ * relocated itself to higher in memory by the time this value is used.
47+ * However, set this to a 32MB offset to allow for easier Linux kernel
48+ * booting as the default is often used as the kernel load address.
49+ */
50+#define CONFIG_SYS_LOAD_ADDR 0x82000000 /* Default load address */
51+
52+/*
53+ * We setup defaults based on constraints from the Linux kernel, which should
54+ * also be safe elsewhere. We have the default load at 32MB into DDR (for
55+ * the kernel), FDT above 128MB (the maximum location for the end of the
56+ * kernel), and the ramdisk 512KB above that (allowing for hopefully never
57+ * seen large trees). We say all of this must be within the first 256MB
58+ * as that will normally be within the kernel lowmem and thus visible via
59+ * bootm_size and we only run on platforms with 256MB or more of memory.
60+ */
61+#define DEFAULT_LINUX_BOOT_ENV \
62+ "loadaddr=0x82000000\0" \
63+ "kernel_addr_r=0x82000000\0" \
64+ "fdtaddr=0x88000000\0" \
65+ "fdt_addr_r=0x88000000\0" \
66+ "rdaddr=0x88080000\0" \
67+ "ramdisk_addr_r=0x88080000\0" \
68+ "bootm_size=0x10000000\0"
69
70 #define CONFIG_MMC
71 #define CONFIG_GENERIC_MMC
72--
731.9.2
74
diff --git a/meta/recipes-bsp/u-boot/u-boot_2013.07.bb b/meta/recipes-bsp/u-boot/u-boot_2013.07.bb
index 3141a2dd06..f8a88568d2 100644
--- a/meta/recipes-bsp/u-boot/u-boot_2013.07.bb
+++ b/meta/recipes-bsp/u-boot/u-boot_2013.07.bb
@@ -16,7 +16,9 @@ SRCREV = "62c175fbb8a0f9a926c88294ea9f7e88eb898f6c"
16 16
17PV = "v2013.07+git${SRCPV}" 17PV = "v2013.07+git${SRCPV}"
18 18
19SRC_URI = "git://git.denx.de/u-boot.git;branch=master" 19SRC_URI = "git://git.denx.de/u-boot.git;branch=master \
20 file://0001-am335x_evm.h-Add-use-DEFAULT_LINUX_BOOT_ENV-environm.patch \
21"
20 22
21S = "${WORKDIR}/git" 23S = "${WORKDIR}/git"
22 24