From patchwork Wed Mar 7 00:30:37 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Warren X-Patchwork-Id: 145125 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 5630CB6F9D for ; Wed, 7 Mar 2012 11:37:08 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932709Ab2CGAhF (ORCPT ); Tue, 6 Mar 2012 19:37:05 -0500 Received: from avon.wwwdotorg.org ([70.85.31.133]:41027 "EHLO avon.wwwdotorg.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932688Ab2CGAhD (ORCPT ); Tue, 6 Mar 2012 19:37:03 -0500 X-Greylist: delayed 373 seconds by postgrey-1.27 at vger.kernel.org; Tue, 06 Mar 2012 19:37:02 EST Received: from severn.wwwdotorg.org (unknown [192.168.65.5]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by avon.wwwdotorg.org (Postfix) with ESMTPS id B70D7643F; Tue, 6 Mar 2012 17:31:17 -0700 (MST) Received: from localhost.localdomain (searspoint.nvidia.com [216.228.112.21]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by severn.wwwdotorg.org (Postfix) with ESMTPSA id 667DDE477F; Tue, 6 Mar 2012 17:30:47 -0700 (MST) From: Stephen Warren To: Michal Marek Cc: Russell King , nico@fluxnic.net, Haavard Skinnemoen , Hans-Christian Egtvedt , Mike Frysinger , Michal Simek , Paul Mundt , "David S. Miller" , Guan Xuetao , linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-arm-kernel@lists.infradead.org, uclinux-dist-devel@blackfin.uclinux.org, microblaze-uclinux@itee.uq.edu.au, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org, Stephen Warren Subject: [PATCH 2/3] Kbuild: Implement CONFIG_UIMAGE_KERNEL_NOLOAD Date: Tue, 6 Mar 2012 17:30:37 -0700 Message-Id: <1331080238-1524-2-git-send-email-swarren@wwwdotorg.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1331080238-1524-1-git-send-email-swarren@wwwdotorg.org> References: <1331080238-1524-1-git-send-email-swarren@wwwdotorg.org> X-NVConfidentiality: public X-Virus-Scanned: clamav-milter 0.96.5 at avon.wwwdotorg.org X-Virus-Status: Clean Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org This allows the user to use U-Boot's mkimage's -T kernel_noload option if their arch Kconfig allows it, and they desire. Signed-off-by: Stephen Warren --- The next patch enables this new CONFIG_ALLOW_ option for ARM. I assume that some other architectures will also be able to enable it, but I'm not familiar enough with any to know which. init/Kconfig | 15 +++++++++++++++ scripts/Makefile.lib | 15 ++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index 6cfd71d..2035562 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -203,6 +203,21 @@ config KERNEL_LZO endchoice +config ALLOW_UIMAGE_KERNEL_NOLOAD + bool + +config UIMAGE_KERNEL_NOLOAD + bool "Use mkimage's -T kernel_noload instead of -T kernel" + depends on ALLOW_UIMAGE_KERNEL_NOLOAD + help + uImage files of type "kernel" embed an absolute load and entry point + address. If the uImage is loaded to a different address, then the + image must be copied the uImage file to the specified load address. + This copy is a waste of time if the uImage is in fact completely + relocatable. If your kernel and bootloader support it, you can build + a "kernel_noload" uImage rather than a "kernel" uImage, which + prevents any such copying. If unsure say N. + config DEFAULT_HOSTNAME string "Default hostname" default "(none)" diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 7b0be18..d9c1c87 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -314,9 +314,18 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh UIMAGE_ARCH = $(SRCARCH) UIMAGE_COMPRESSION = $(if $(2),$(2),none) UIMAGE_OPTS-y = -UIMAGE_TYPE = kernel -UIMAGE_LOADADDR=arch_must_set_this -UIMAGE_ENTRYADDR=$(UIMAGE_LOADADDR) +ifeq ($(CONFIG_UIMAGE_KERNEL_NOLOAD),y) + UIMAGE_TYPE = kernel_noload + # Unused by bootloader: + UIMAGE_LOADADDR=0 + # Entry point relative to actual load address: + UIMAGE_ENTRYADDR=0 +else + UIMAGE_TYPE = kernel + # Absolute addresses: + UIMAGE_LOADADDR=arch_must_set_this + UIMAGE_ENTRYADDR=$(UIMAGE_LOADADDR) +endif UIMAGE_NAME = 'Linux-$(KERNELRELEASE)' UIMAGE_IN = $< UIMAGE_OUT = $@