All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: linux-arm-kernel@lists.infradead.org
Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Nicolas Pitre <nicolas.pitre@linaro.org>,
	Peter Maydell <peter.maydell@linaro.org>,
	Michal Simek <monstr@monstr.eu>, Joel Fernandes <joelf@ti.com>,
	linux-arm-msm@vger.kernel.org,
	Stephen Boyd <sboyd@codeaurora.org>,
	Daniel Thompson <daniel.thompson@linaro.org>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Peter Crosthwaite <peter.crosthwaite@xilinx.com>,
	Christopher Covington <cov@codeaurora.org>
Subject: Re: [Qemu-devel] Change of TEXT_OFFSET for multi_v7_defconfig
Date: Tue, 22 Apr 2014 20:32:10 +0200	[thread overview]
Message-ID: <15350123.PBHzyiOlX4@wuerfel> (raw)
In-Reply-To: <20140422175325.GD23955@obsidianresearch.com>

On Tuesday 22 April 2014 11:53:25 Jason Gunthorpe wrote:
> On Tue, Apr 22, 2014 at 06:11:42PM +0100, Russell King - ARM Linux wrote:
> 
> > Put another way, if your platform is part of the multi-platform kernel
> > then you are *excluded* from being able to use this... unless you hack
> > the Kconfig, and then also provide a constant value for PHYS_OFFSET,
> > thereby _tying_ the kernel you built to a _single_ platform.
> 
> That is exactly right. To get a fixed LMA you must commit to a
> non-relocatable kernel image.
> 
> Realistically this patch would need to be accompanied by something
> that makes ARM_PATCH_PHYS_VIRT optional for multiplatform based on
> EXPERT or similar.

Incidentally, I have this experimental patch in my endless 'randconfig'
queue of things to do properly at a later point.
The idea is to let a person building a kernel intentionally do a
number of things that result in a not-quite-multiplatform configuration
when CONFIG_BROKEN_MULTIPLATFORM is disabled.

The main intention is allow NOMMU builds on platforms that are already
converted to multiplatform, and to prevent people from accidentally
turning on DEBUG_LL, as that breaks all other machines. A couple of
other things are in the same category.

	Arnd

>From c9917a4a1b3f326e84932d7e860597413a98643b Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Mon, 24 Feb 2014 16:38:34 +0100
Subject: [PATCH] ARM: add CONFIG_BROKEN_MULTIPLATFORM

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 65ea715..9ae3c0b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -233,7 +233,7 @@ config VECTORS_BASE
 	  in size.
 
 config ARM_PATCH_PHYS_VIRT
-	bool "Patch physical to virtual translations at runtime" if EMBEDDED
+	bool "Patch physical to virtual translations at runtime" if BROKEN_MULTIPLATFORM
 	default y
 	depends on !XIP_KERNEL && MMU
 	depends on !ARCH_REALVIEW || !SPARSEMEM
@@ -302,16 +302,14 @@ config MMU
 #
 choice
 	prompt "ARM system type"
-	default ARCH_VERSATILE if !MMU
-	default ARCH_MULTIPLATFORM if MMU
+	default ARCH_MULTIPLATFORM
 
 config ARCH_MULTIPLATFORM
 	bool "Allow multiple platforms to be selected"
-	depends on MMU
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select ARM_HAS_SG_CHAIN
-	select ARM_PATCH_PHYS_VIRT
 	select AUTO_ZRELADDR
+	select BROKEN_MULTIPLATFORM if !MMU
 	select COMMON_CLK
 	select GENERIC_CLOCKEVENTS
 	select MULTI_IRQ_HANDLER
@@ -865,6 +863,18 @@ config ARCH_OMAP1
 
 endchoice
 
+config BROKEN_MULTIPLATFORM
+	bool "Allow multiplatform builds that may be broken" if ARCH_MULTIPLATFORM && EXPERT
+	def_bool !ARCH_MULTIPLATFORM
+	help
+	  This is a meta option that makes other options visible that
+	  are normally hidden when building a kernel with ARCH_MULTIPLATFORM
+	  support.
+	  You have to enable this option in order to select any option
+	  that can cause your kernel to only work on a subset of the
+	  platforms that are enabled. This includes disabling MMU
+	  or ARM_PATCH_PHYS_VIRT, or enabling ZBOOT_ROM.
+
 menu "Multiple platform selection"
 	depends on ARCH_MULTIPLATFORM
 
@@ -1943,6 +1953,7 @@ config DEPRECATED_PARAM_STRUCT
 # TEXT and BSS so we preserve their values in the config files.
 config ZBOOT_ROM_TEXT
 	hex "Compressed ROM boot loader base address"
+	depends on BROKEN_MULTIPLATFORM
 	default "0"
 	help
 	  The physical address at which the ROM-able zImage is to be
@@ -1954,6 +1965,7 @@ config ZBOOT_ROM_TEXT
 
 config ZBOOT_ROM_BSS
 	hex "Compressed ROM boot loader BSS address"
+	depends on BROKEN_MULTIPLATFORM
 	default "0"
 	help
 	  The base address of an area of read/write memory in the target
@@ -1967,6 +1979,7 @@ config ZBOOT_ROM_BSS
 
 config ZBOOT_ROM
 	bool "Compressed boot loader in ROM/flash"
+	depends on BROKEN_MULTIPLATFORM
 	depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
 	depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR
 	help
@@ -2092,7 +2105,7 @@ endchoice
 
 config XIP_KERNEL
 	bool "Kernel Execute-In-Place from ROM"
-	depends on !ARM_LPAE && !ARCH_MULTIPLATFORM
+	depends on !ARM_LPAE && BROKEN_MULTIPLATFORM
 	help
 	  Execute-In-Place allows the kernel to run from non-volatile storage
 	  directly addressable by the CPU, such as NOR flash. This saves RAM
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 6175b50..e193881 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -80,6 +80,7 @@ config DEBUG_USER
 config DEBUG_LL
 	bool "Kernel low-level debugging functions (read help!)"
 	depends on DEBUG_KERNEL
+	depends on BROKEN_MULTIPLATFORM
 	help
 	  Say Y here to include definitions of printascii, printch, printhex
 	  in the kernel.  This is helpful if you are debugging code that
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index cddfd2e..df61015 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -111,7 +111,7 @@ config SOC_IMX31
 	select CPU_V6
 	select IMX_HAVE_PLATFORM_MXC_RNGA
 	select MXC_AVIC
-	select SMP_ON_UP if SMP
+	select SMP_ON_UP if SMP && !BROKEN_MULTIPLATFORM
 
 config SOC_IMX35
 	bool
@@ -119,7 +119,7 @@ config SOC_IMX35
 	select HAVE_EPIT
 	select MXC_AVIC
 	select PINCTRL_IMX35
-	select SMP_ON_UP if SMP
+	select SMP_ON_UP if SMP && !BROKEN_MULTIPLATFORM
 
 config SOC_IMX5
 	bool
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig
index e4e505f..05be41c 100644
--- a/arch/arm/mach-prima2/Kconfig
+++ b/arch/arm/mach-prima2/Kconfig
@@ -33,7 +33,6 @@ config ARCH_MARCO
 	default y
 	select ARM_GIC
 	select HAVE_ARM_SCU if SMP
-	select SMP_ON_UP if SMP
 	help
           Support for CSR SiRFSoC ARM Cortex A9 Platform
 

WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [Qemu-devel] Change of TEXT_OFFSET for multi_v7_defconfig
Date: Tue, 22 Apr 2014 20:32:10 +0200	[thread overview]
Message-ID: <15350123.PBHzyiOlX4@wuerfel> (raw)
In-Reply-To: <20140422175325.GD23955@obsidianresearch.com>

On Tuesday 22 April 2014 11:53:25 Jason Gunthorpe wrote:
> On Tue, Apr 22, 2014 at 06:11:42PM +0100, Russell King - ARM Linux wrote:
> 
> > Put another way, if your platform is part of the multi-platform kernel
> > then you are *excluded* from being able to use this... unless you hack
> > the Kconfig, and then also provide a constant value for PHYS_OFFSET,
> > thereby _tying_ the kernel you built to a _single_ platform.
> 
> That is exactly right. To get a fixed LMA you must commit to a
> non-relocatable kernel image.
> 
> Realistically this patch would need to be accompanied by something
> that makes ARM_PATCH_PHYS_VIRT optional for multiplatform based on
> EXPERT or similar.

Incidentally, I have this experimental patch in my endless 'randconfig'
queue of things to do properly at a later point.
The idea is to let a person building a kernel intentionally do a
number of things that result in a not-quite-multiplatform configuration
when CONFIG_BROKEN_MULTIPLATFORM is disabled.

The main intention is allow NOMMU builds on platforms that are already
converted to multiplatform, and to prevent people from accidentally
turning on DEBUG_LL, as that breaks all other machines. A couple of
other things are in the same category.

	Arnd

>From c9917a4a1b3f326e84932d7e860597413a98643b Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Mon, 24 Feb 2014 16:38:34 +0100
Subject: [PATCH] ARM: add CONFIG_BROKEN_MULTIPLATFORM

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 65ea715..9ae3c0b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -233,7 +233,7 @@ config VECTORS_BASE
 	  in size.
 
 config ARM_PATCH_PHYS_VIRT
-	bool "Patch physical to virtual translations at runtime" if EMBEDDED
+	bool "Patch physical to virtual translations at runtime" if BROKEN_MULTIPLATFORM
 	default y
 	depends on !XIP_KERNEL && MMU
 	depends on !ARCH_REALVIEW || !SPARSEMEM
@@ -302,16 +302,14 @@ config MMU
 #
 choice
 	prompt "ARM system type"
-	default ARCH_VERSATILE if !MMU
-	default ARCH_MULTIPLATFORM if MMU
+	default ARCH_MULTIPLATFORM
 
 config ARCH_MULTIPLATFORM
 	bool "Allow multiple platforms to be selected"
-	depends on MMU
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select ARM_HAS_SG_CHAIN
-	select ARM_PATCH_PHYS_VIRT
 	select AUTO_ZRELADDR
+	select BROKEN_MULTIPLATFORM if !MMU
 	select COMMON_CLK
 	select GENERIC_CLOCKEVENTS
 	select MULTI_IRQ_HANDLER
@@ -865,6 +863,18 @@ config ARCH_OMAP1
 
 endchoice
 
+config BROKEN_MULTIPLATFORM
+	bool "Allow multiplatform builds that may be broken" if ARCH_MULTIPLATFORM && EXPERT
+	def_bool !ARCH_MULTIPLATFORM
+	help
+	  This is a meta option that makes other options visible that
+	  are normally hidden when building a kernel with ARCH_MULTIPLATFORM
+	  support.
+	  You have to enable this option in order to select any option
+	  that can cause your kernel to only work on a subset of the
+	  platforms that are enabled. This includes disabling MMU
+	  or ARM_PATCH_PHYS_VIRT, or enabling ZBOOT_ROM.
+
 menu "Multiple platform selection"
 	depends on ARCH_MULTIPLATFORM
 
@@ -1943,6 +1953,7 @@ config DEPRECATED_PARAM_STRUCT
 # TEXT and BSS so we preserve their values in the config files.
 config ZBOOT_ROM_TEXT
 	hex "Compressed ROM boot loader base address"
+	depends on BROKEN_MULTIPLATFORM
 	default "0"
 	help
 	  The physical address at which the ROM-able zImage is to be
@@ -1954,6 +1965,7 @@ config ZBOOT_ROM_TEXT
 
 config ZBOOT_ROM_BSS
 	hex "Compressed ROM boot loader BSS address"
+	depends on BROKEN_MULTIPLATFORM
 	default "0"
 	help
 	  The base address of an area of read/write memory in the target
@@ -1967,6 +1979,7 @@ config ZBOOT_ROM_BSS
 
 config ZBOOT_ROM
 	bool "Compressed boot loader in ROM/flash"
+	depends on BROKEN_MULTIPLATFORM
 	depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
 	depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR
 	help
@@ -2092,7 +2105,7 @@ endchoice
 
 config XIP_KERNEL
 	bool "Kernel Execute-In-Place from ROM"
-	depends on !ARM_LPAE && !ARCH_MULTIPLATFORM
+	depends on !ARM_LPAE && BROKEN_MULTIPLATFORM
 	help
 	  Execute-In-Place allows the kernel to run from non-volatile storage
 	  directly addressable by the CPU, such as NOR flash. This saves RAM
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 6175b50..e193881 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -80,6 +80,7 @@ config DEBUG_USER
 config DEBUG_LL
 	bool "Kernel low-level debugging functions (read help!)"
 	depends on DEBUG_KERNEL
+	depends on BROKEN_MULTIPLATFORM
 	help
 	  Say Y here to include definitions of printascii, printch, printhex
 	  in the kernel.  This is helpful if you are debugging code that
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index cddfd2e..df61015 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -111,7 +111,7 @@ config SOC_IMX31
 	select CPU_V6
 	select IMX_HAVE_PLATFORM_MXC_RNGA
 	select MXC_AVIC
-	select SMP_ON_UP if SMP
+	select SMP_ON_UP if SMP && !BROKEN_MULTIPLATFORM
 
 config SOC_IMX35
 	bool
@@ -119,7 +119,7 @@ config SOC_IMX35
 	select HAVE_EPIT
 	select MXC_AVIC
 	select PINCTRL_IMX35
-	select SMP_ON_UP if SMP
+	select SMP_ON_UP if SMP && !BROKEN_MULTIPLATFORM
 
 config SOC_IMX5
 	bool
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig
index e4e505f..05be41c 100644
--- a/arch/arm/mach-prima2/Kconfig
+++ b/arch/arm/mach-prima2/Kconfig
@@ -33,7 +33,6 @@ config ARCH_MARCO
 	default y
 	select ARM_GIC
 	select HAVE_ARM_SCU if SMP
-	select SMP_ON_UP if SMP
 	help
           Support for CSR SiRFSoC ARM Cortex A9 Platform
 

  parent reply	other threads:[~2014-04-22 18:32 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15 10:44 Change of TEXT_OFFSET for multi_v7_defconfig Daniel Thompson
2014-04-15 10:44 ` Daniel Thompson
2014-04-15 17:53 ` Stephen Boyd
2014-04-15 17:53   ` Stephen Boyd
2014-04-16 16:18 ` Christopher Covington
2014-04-16 16:18   ` Christopher Covington
2014-04-16 19:14   ` Nicolas Pitre
2014-04-16 19:14     ` Nicolas Pitre
2014-04-16 21:08     ` Christopher Covington
2014-04-16 21:08       ` Christopher Covington
2014-04-16 21:36       ` Peter Maydell
2014-04-16 21:36         ` Peter Maydell
2014-04-16 22:34         ` Russell King - ARM Linux
2014-04-16 22:34           ` Russell King - ARM Linux
2014-04-16 22:33       ` Russell King - ARM Linux
2014-04-16 22:33         ` Russell King - ARM Linux
2014-04-16 23:21       ` Nicolas Pitre
2014-04-16 23:21         ` Nicolas Pitre
2014-04-17 18:33         ` Christopher Covington
2014-04-17 18:33           ` Christopher Covington
2014-04-17 19:48           ` Nicolas Pitre
2014-04-17 19:48             ` Nicolas Pitre
2014-04-17 20:49             ` Christopher Covington
2014-04-17 20:49               ` Christopher Covington
2014-04-17 20:54               ` Peter Maydell
2014-04-17 20:54                 ` Peter Maydell
2014-04-17 20:35           ` Jason Gunthorpe
2014-04-17 20:35             ` Jason Gunthorpe
2014-04-22  9:44             ` Daniel Thompson
2014-04-22  9:44               ` Daniel Thompson
2014-04-22 17:05               ` Jason Gunthorpe
2014-04-22 17:05                 ` Jason Gunthorpe
2014-04-22 17:55                 ` Nicolas Pitre
2014-04-22 17:55                   ` Nicolas Pitre
2014-04-22 18:36                   ` Russell King - ARM Linux
2014-04-22 18:36                     ` Russell King - ARM Linux
2014-04-22 14:50             ` Michal Simek
2014-04-22 14:50               ` [Qemu-devel] " Michal Simek
2014-04-22 17:00               ` Jason Gunthorpe
2014-04-22 17:00                 ` Jason Gunthorpe
2014-04-22 17:11               ` Russell King - ARM Linux
2014-04-22 17:11                 ` Russell King - ARM Linux
2014-04-22 17:53                 ` Jason Gunthorpe
2014-04-22 17:53                   ` Jason Gunthorpe
2014-04-22 18:12                   ` Russell King - ARM Linux
2014-04-22 18:12                     ` Russell King - ARM Linux
2014-04-22 18:32                   ` Arnd Bergmann [this message]
2014-04-22 18:32                     ` Arnd Bergmann
2014-04-22 18:38                     ` Russell King - ARM Linux
2014-04-22 18:38                       ` Russell King - ARM Linux
2014-04-22 18:45                       ` Arnd Bergmann
2014-04-22 18:45                         ` Arnd Bergmann
2014-04-17 17:11     ` Rob Herring
2014-04-17 17:11       ` Rob Herring
2014-04-17 20:06       ` Nicolas Pitre
2014-04-17 20:06         ` Nicolas Pitre
2014-04-17 20:16         ` Russell King - ARM Linux
2014-04-17 20:16           ` Russell King - ARM Linux
2014-04-17 21:18           ` Rob Herring
2014-04-17 21:18             ` Rob Herring
2014-04-17 21:35             ` Russell King - ARM Linux
2014-04-17 21:35               ` Russell King - ARM Linux
2014-04-18  2:53               ` Rob Herring
2014-04-18  2:53                 ` Rob Herring
2014-04-18  4:34                 ` Nicolas Pitre
2014-04-18  4:34                   ` Nicolas Pitre
2014-04-22 10:26                   ` Daniel Thompson
2014-04-22 10:26                     ` Daniel Thompson
2014-04-22 10:40                     ` Russell King - ARM Linux
2014-04-22 10:40                       ` Russell King - ARM Linux
2014-04-22 11:41                       ` Daniel Thompson
2014-04-22 11:41                         ` Daniel Thompson
2014-04-18  8:41                 ` Russell King - ARM Linux
2014-04-18  8:41                   ` Russell King - ARM Linux
2014-04-22  9:53               ` Daniel Thompson
2014-04-22  9:53                 ` Daniel Thompson
2014-04-22 10:07                 ` Russell King - ARM Linux
2014-04-22 10:07                   ` Russell King - ARM Linux

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=15350123.PBHzyiOlX4@wuerfel \
    --to=arnd@arndb.de \
    --cc=cov@codeaurora.org \
    --cc=daniel.thompson@linaro.org \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=joelf@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=monstr@monstr.eu \
    --cc=nicolas.pitre@linaro.org \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sboyd@codeaurora.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.