diff mbox

[resend] ARM: nommu: remove ARCH_MULTIPLATFORM's dependency on CONFIG_MMU

Message ID 1374597712-18112-1-git-send-email-jonathan.austin@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jonathan Austin July 23, 2013, 4:41 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

ARCH_MULTIPLATFORM currently requires CONFIG_MMU to be set, however it is
intended that all future V6/V7 platforms are compatible with
ARCH_MULTIPLATFORM, and so this requirement precludes that addition of new
!MMU platforms.

Furthermore, this requirement creates unnecessary differences between the MMU
and !MMU worlds, which is undesirable.

This patch allows ARCH_MULTIPLATFORM to remain selected in a !MMU
configuration. There is still a need to hardcode CONFIG_DRAM_BASE and other
parameters relating to the system, so this patch is less about making an
actual multiplatform kernel for !MMU and more about consistency across the
kernel.

Along with the nommu-fixes, R7 support and MPU support already sent to this
list, this patch is sufficient to allow building and booting of kernel for a
Cortex-R7 core on a Versatile Express platform.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
---

This patch was written by Arnd and after some discussion/testing at my end he
asked me to send it to the list with a full description.

I'm resending this after testing it still allows R7 to boot on 3.11.

Assuming no comments, I'll drop this in the patch system shortly. Any calls for
Cc-ing stable?

Jonny

 arch/arm/Kconfig |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Jonathan Austin Aug. 15, 2013, 5:02 p.m. UTC | #1
On 23/07/13 17:41, Jonathan Austin wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> ARCH_MULTIPLATFORM currently requires CONFIG_MMU to be set, however it is
> intended that all future V6/V7 platforms are compatible with
> ARCH_MULTIPLATFORM, and so this requirement precludes that addition of new
> !MMU platforms.
>
> Furthermore, this requirement creates unnecessary differences between the MMU
> and !MMU worlds, which is undesirable.
>
> This patch allows ARCH_MULTIPLATFORM to remain selected in a !MMU
> configuration. There is still a need to hardcode CONFIG_DRAM_BASE and other
> parameters relating to the system, so this patch is less about making an
> actual multiplatform kernel for !MMU and more about consistency across the
> kernel.
>
> Along with the nommu-fixes, R7 support and MPU support already sent to this
> list, this patch is sufficient to allow building and booting of kernel for a
> Cortex-R7 core on a Versatile Express platform.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
> ---
>
> This patch was written by Arnd and after some discussion/testing at my end he
> asked me to send it to the list with a full description.
>
> I'm resending this after testing it still allows R7 to boot on 3.11.
>
> Assuming no comments, I'll drop this in the patch system shortly. Any calls for
> Cc-ing stable?

I've just put this in Russell's patch system (as 7817/1) after testing 
with R7/rc5

Jonny

>
> Jonny
>
>   arch/arm/Kconfig |    3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 49d993c..5a61686 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -289,8 +289,7 @@ choice
>
>   config ARCH_MULTIPLATFORM
>   	bool "Allow multiple platforms to be selected"
> -	depends on MMU
> -	select ARM_PATCH_PHYS_VIRT
> +	select ARM_PATCH_PHYS_VIRT if MMU
>   	select AUTO_ZRELADDR
>   	select COMMON_CLK
>   	select MULTI_IRQ_HANDLER
>
Russell King - ARM Linux Aug. 19, 2013, 11:24 p.m. UTC | #2
On Tue, Jul 23, 2013 at 05:41:51PM +0100, Jonathan Austin wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> ARCH_MULTIPLATFORM currently requires CONFIG_MMU to be set, however it is
> intended that all future V6/V7 platforms are compatible with
> ARCH_MULTIPLATFORM, and so this requirement precludes that addition of new
> !MMU platforms.
> 
> Furthermore, this requirement creates unnecessary differences between the MMU
> and !MMU worlds, which is undesirable.
> 
> This patch allows ARCH_MULTIPLATFORM to remain selected in a !MMU
> configuration. There is still a need to hardcode CONFIG_DRAM_BASE and other
> parameters relating to the system, so this patch is less about making an
> actual multiplatform kernel for !MMU and more about consistency across the
> kernel.
> 
> Along with the nommu-fixes, R7 support and MPU support already sent to this
> list, this patch is sufficient to allow building and booting of kernel for a
> Cortex-R7 core on a Versatile Express platform.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
> ---
> 
> This patch was written by Arnd and after some discussion/testing at my end he
> asked me to send it to the list with a full description.
> 
> I'm resending this after testing it still allows R7 to boot on 3.11.
> 
> Assuming no comments, I'll drop this in the patch system shortly. Any
> calls for Cc-ing stable?

No, this is not a stable issue.  Stable is for fixing regressions, it's
not for features, and as this is something that has never been in any
kernel, it can't be claimed to be fixing a regression.

Now, here's the question: can multiplatform ever work properly on nommu?

We get multiplatform working on MMU by using the MMU to provide a more
consistent view of the system.  On noMMU, we don't have that.  So if
your kernel is built to run assuming that it will be located in ram at
location X on platform Y, that isn't going to work if platform Z doesn't
have RAM there.

My feeling is that the motivation behind this patch is to avoid an
amount of yuckyness associated with trying to enable Versatile Express
support outside of the multiplatform container - it's not really about
being able to build a single zImage which works on all noMMU platforms.
So, I don't think this is the right solution to this problem.

The quick way to solve this is to append || !MMU to:

	bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7

but this still leaves us in the situation where we can select multiple
incompatible platforms.  That I don't really have an answer for.

However, one thing I am certain of is that faking things by allowing
multiplatform support for platforms which can't be multiplatform is
the wrong approach.
diff mbox

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 49d993c..5a61686 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -289,8 +289,7 @@  choice
 
 config ARCH_MULTIPLATFORM
 	bool "Allow multiple platforms to be selected"
-	depends on MMU
-	select ARM_PATCH_PHYS_VIRT
+	select ARM_PATCH_PHYS_VIRT if MMU
 	select AUTO_ZRELADDR
 	select COMMON_CLK
 	select MULTI_IRQ_HANDLER