linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: swarren@nvidia.com (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] ARM: Add Kconfig option to use mkimage -T kernel_noload
Date: Tue, 28 Feb 2012 17:03:23 -0700	[thread overview]
Message-ID: <1330473804-23348-1-git-send-email-swarren@nvidia.com> (raw)

uImage files typically encode a single absolute load and entry address.
This is inconvenient when attempting to share that uImage across multiple
SoCs with different physical RAM addresses. Recent versions of mkimage
implement a "kernel_noload" image type which encodes no absolute load
address, and a relative entry address. This works well for uImage-wrapped
ARM zImages, since they are relocatable.

This is enabled by commit b9b50e89d317c58becd0e2d7fac2e21e3a81dd0a
"image: Implement IH_TYPE_KERNEL_NOLOAD" in U-Boot.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
I assume I should put this into the ARM patch tracker if it's OK?

 arch/arm/Kconfig       |   15 +++++++++++++++
 arch/arm/boot/Makefile |   15 ++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0884b67..27e7672 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -2066,6 +2066,21 @@ config AUTO_ZRELADDR
 	  0xf8000000. This assumes the zImage being placed in the first 128MB
 	  from start of memory.
 
+config UIMAGE_NOLOAD
+	bool "Using mkimage's kernel_noload image type"
+	depends on AUTO_ZRELADDR
+	help
+	  Say Y here to build a uImage using type "kernel_noload" instead of
+	  "kernel".
+
+	  uImage files typically encode a single absolute load and entry
+	  address. This is inconvenient when attempting to share that uImage
+	  across multiple SoCs with different physical RAM addresses. Recent
+	  versions of mkimage implement a "kernel_noload" image type which
+	  encodes no absolute load address, and a relative entry address.
+	  This works well for uImage-wrapped ARM zImages, since they are
+	  relocatable.
+
 endmenu
 
 menu "CPU Power Management"
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
index fc871e7..45c3cbe 100644
--- a/arch/arm/boot/Makefile
+++ b/arch/arm/boot/Makefile
@@ -70,10 +70,21 @@ $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
 clean-files := *.dtb
 
 quiet_cmd_uimage = UIMAGE  $@
-      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
+      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux \
+		   -T $(UIMAGE_TYPE) \
 		   -C none -a $(LOADADDR) -e $(STARTADDR) \
 		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
 
+ifeq ($(CONFIG_UIMAGE_NOLOAD),y)
+
+$(obj)/uImage: UIMAGE_TYPE := kernel_noload
+$(obj)/uImage: override LOADADDR := 0
+$(obj)/uImage: STARTADDR := 0 # Relative to load address
+
+else
+
+$(obj)/uImage: UIMAGE_TYPE := kernel
+
 ifeq ($(CONFIG_ZBOOT_ROM),y)
 $(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
 else
@@ -82,6 +93,8 @@ endif
 
 $(obj)/uImage: STARTADDR=$(LOADADDR)
 
+endif
+
 check_for_multiple_loadaddr = \
 if [ $(words $(LOADADDR)) -gt 1 ]; then \
 	echo 'multiple load addresses: $(LOADADDR)'; \
-- 
1.7.0.4

             reply	other threads:[~2012-02-29  0:03 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-29  0:03 Stephen Warren [this message]
2012-02-29  0:03 ` [PATCH 2/2] ARM: tegra: Add zreladdr etc to Makefile.boot for Tegra30 Stephen Warren
2012-02-29 12:29 ` [PATCH 1/2] ARM: Add Kconfig option to use mkimage -T kernel_noload Jean-Christophe PLAGNIOL-VILLARD
2012-02-29 16:58   ` Stephen Warren
2012-02-29 18:14     ` Jean-Christophe PLAGNIOL-VILLARD
2012-02-29 18:33       ` Tim Bird
2012-02-29 18:50         ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-12 17:40           ` Marek Vasut
2012-03-12 17:44             ` Jean-Christophe PLAGNIOL-VILLARD
2012-02-29 19:12         ` Uwe Kleine-König
2012-02-29 19:17           ` Stephen Warren
2012-02-29 19:44             ` Uwe Kleine-König
2012-02-29 19:59               ` Stephen Warren
2012-02-29 20:12                 ` Andre Renaud
2012-02-29 20:16                   ` Stephen Warren
2012-02-29 20:19                   ` Russell King - ARM Linux
2012-02-29 20:25                     ` Andre Renaud
2012-02-29 20:29                       ` Russell King - ARM Linux
2012-02-29 20:39                       ` Uwe Kleine-König
2012-02-29 20:45                         ` Russell King - ARM Linux
2012-02-29 20:59                           ` Uwe Kleine-König
2012-03-01  4:55                             ` Jean-Christophe PLAGNIOL-VILLARD
2012-03-12 17:42                             ` Marek Vasut
2012-02-29 21:27                           ` Stephen Warren
2012-02-29 22:28                             ` Andre Renaud
2012-02-29 20:30                   ` Uwe Kleine-König
2012-02-29 23:53               ` Ryan Mallon
2012-03-12 17:44                 ` Marek Vasut
2012-03-01 15:34               ` Mark Brown
2012-03-01 17:01 ` Stephen Warren
2012-03-05  4:21   ` Olof Johansson
2012-03-05 20:29   ` Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1330473804-23348-1-git-send-email-swarren@nvidia.com \
    --to=swarren@nvidia.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).