All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix Integrator for noMMU
@ 2015-05-19 10:19 Russell King - ARM Linux
  2015-05-19 10:20 ` [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled Russell King
  2015-05-19 10:20 ` [PATCH 2/2] ARM: allow Integrator to be selected for noMMU builds Russell King
  0 siblings, 2 replies; 4+ messages in thread
From: Russell King - ARM Linux @ 2015-05-19 10:19 UTC (permalink / raw)
  To: linux-arm-kernel

Arnd,

Here's the couple of patches which implement the idea I discussed over a
month ago to sort out the multiplatform-vs-noMMU issues around Integrator.
These have been sitting in my tree for most of that time, and have been
subjected to my autobuilder during that period.

Please merge these through arm-soc.

 arch/arm/Kconfig                 |  4 ++++
 arch/arm/mach-integrator/Kconfig |  3 +--
 arch/arm/mm/Kconfig              | 40 ++++++++++++++++++++++++++--------------
 3 files changed, 31 insertions(+), 16 deletions(-)

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled
  2015-05-19 10:19 [PATCH 0/2] Fix Integrator for noMMU Russell King - ARM Linux
@ 2015-05-19 10:20 ` Russell King
  2015-05-20 16:09   ` Arnd Bergmann
  2015-05-19 10:20 ` [PATCH 2/2] ARM: allow Integrator to be selected for noMMU builds Russell King
  1 sibling, 1 reply; 4+ messages in thread
From: Russell King @ 2015-05-19 10:20 UTC (permalink / raw)
  To: linux-arm-kernel

Commit dc680b989d51 ("ARM: fix multiplatform allmodcompile") went a
little too far, and effectively prevented noMMU CPUs from ever being
selectable.

Fix this by introducing a set of CPU_CLASS_xxx configuration symbols
which control whether a class of CPU symbols are visible for selection,
and arrange for these to be set according to the multiplatform class
selected, or whenever multiplatform is itself disabled.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 arch/arm/mm/Kconfig | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 8f76f0eb24ac..a342c48073b1 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -1,5 +1,17 @@
 comment "Processor Type"
 
+config CPU_CLASS_V4T
+	def_bool ARCH_MULTI_V4T || !ARCH_MULTIPLATFORM
+
+config CPU_CLASS_V5
+	def_bool ARCH_MULTI_V5 || !ARCH_MULTIPLATFORM
+
+config CPU_CLASS_V6
+	def_bool ARCH_MULTI_V6 || !ARCH_MULTIPLATFORM
+
+config CPU_CLASS_V7
+	def_bool ARCH_MULTI_V7 || !ARCH_MULTIPLATFORM
+
 # Select CPU types depending on the architecture selected.  This selects
 # which CPUs we support in the kernel image, and the compiler instruction
 # optimiser behaviour.
@@ -21,7 +33,7 @@ config CPU_ARM7TDMI
 
 # ARM720T
 config CPU_ARM720T
-	bool "Support ARM720T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+	bool "Support ARM720T processor" if CPU_CLASS_V4T && ARCH_INTEGRATOR
 	select CPU_32v4T
 	select CPU_ABRT_LV4T
 	select CPU_CACHE_V4
@@ -39,7 +51,7 @@ config CPU_ARM720T
 
 # ARM740T
 config CPU_ARM740T
-	bool "Support ARM740T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+	bool "Support ARM740T processor" if CPU_CLASS_V4T && ARCH_INTEGRATOR
 	depends on !MMU
 	select CPU_32v4T
 	select CPU_ABRT_LV4T
@@ -71,7 +83,7 @@ config CPU_ARM9TDMI
 
 # ARM920T
 config CPU_ARM920T
-	bool "Support ARM920T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+	bool "Support ARM920T processor" if CPU_CLASS_V4T && ARCH_INTEGRATOR
 	select CPU_32v4T
 	select CPU_ABRT_EV4T
 	select CPU_CACHE_V4WT
@@ -89,7 +101,7 @@ config CPU_ARM920T
 
 # ARM922T
 config CPU_ARM922T
-	bool "Support ARM922T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+	bool "Support ARM922T processor" if CPU_CLASS_V4T && ARCH_INTEGRATOR
 	select CPU_32v4T
 	select CPU_ABRT_EV4T
 	select CPU_CACHE_V4WT
@@ -127,7 +139,7 @@ config CPU_ARM925T
 
 # ARM926T
 config CPU_ARM926T
-	bool "Support ARM926T processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V5) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB)
+	bool "Support ARM926T processor" if CPU_CLASS_V5 && (ARCH_INTEGRATOR || MACH_REALVIEW_EB)
 	select CPU_32v5
 	select CPU_ABRT_EV5TJ
 	select CPU_CACHE_VIVT
@@ -163,7 +175,7 @@ config CPU_FA526
 
 # ARM940T
 config CPU_ARM940T
-	bool "Support ARM940T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+	bool "Support ARM940T processor" if CPU_CLASS_V4T && ARCH_INTEGRATOR
 	depends on !MMU
 	select CPU_32v4T
 	select CPU_ABRT_NOMMU
@@ -181,7 +193,7 @@ config CPU_ARM940T
 
 # ARM946E-S
 config CPU_ARM946E
-	bool "Support ARM946E-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
+	bool "Support ARM946E-S processor" if CPU_CLASS_V5 && ARCH_INTEGRATOR
 	depends on !MMU
 	select CPU_32v5
 	select CPU_ABRT_NOMMU
@@ -198,7 +210,7 @@ config CPU_ARM946E
 
 # ARM1020 - needs validating
 config CPU_ARM1020
-	bool "Support ARM1020T (rev 0) processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
+	bool "Support ARM1020T (rev 0) processor" if CPU_CLASS_V5 && ARCH_INTEGRATOR
 	select CPU_32v5
 	select CPU_ABRT_EV4T
 	select CPU_CACHE_V4WT
@@ -216,7 +228,7 @@ config CPU_ARM1020
 
 # ARM1020E - needs validating
 config CPU_ARM1020E
-	bool "Support ARM1020E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
+	bool "Support ARM1020E processor" if CPU_CLASS_V5 && ARCH_INTEGRATOR
 	depends on n
 	select CPU_32v5
 	select CPU_ABRT_EV4T
@@ -229,7 +241,7 @@ config CPU_ARM1020E
 
 # ARM1022E
 config CPU_ARM1022
-	bool "Support ARM1022E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
+	bool "Support ARM1022E processor" if CPU_CLASS_V5 && ARCH_INTEGRATOR
 	select CPU_32v5
 	select CPU_ABRT_EV4T
 	select CPU_CACHE_VIVT
@@ -247,7 +259,7 @@ config CPU_ARM1022
 
 # ARM1026EJ-S
 config CPU_ARM1026
-	bool "Support ARM1026EJ-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
+	bool "Support ARM1026EJ-S processor" if CPU_CLASS_V5 && ARCH_INTEGRATOR
 	select CPU_32v5
 	select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
 	select CPU_CACHE_VIVT
@@ -358,7 +370,7 @@ config CPU_PJ4B
 
 # ARMv6
 config CPU_V6
-	bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
+	bool "Support ARM V6 processor" if CPU_CLASS_V6 && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
 	select CPU_32v6
 	select CPU_ABRT_EV6
 	select CPU_CACHE_V6
@@ -371,7 +383,7 @@ config CPU_V6
 
 # ARMv6k
 config CPU_V6K
-	bool "Support ARM V6K processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
+	bool "Support ARM V6K processor" if CPU_CLASS_V6 && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
 	select CPU_32v6
 	select CPU_32v6K
 	select CPU_ABRT_EV6
@@ -385,7 +397,7 @@ config CPU_V6K
 
 # ARMv7
 config CPU_V7
-	bool "Support ARM V7 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V7) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
+	bool "Support ARM V7 processor" if CPU_CLASS_V7 && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
 	select CPU_32v6K
 	select CPU_32v7
 	select CPU_ABRT_EV7
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] ARM: allow Integrator to be selected for noMMU builds
  2015-05-19 10:19 [PATCH 0/2] Fix Integrator for noMMU Russell King - ARM Linux
  2015-05-19 10:20 ` [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled Russell King
@ 2015-05-19 10:20 ` Russell King
  1 sibling, 0 replies; 4+ messages in thread
From: Russell King @ 2015-05-19 10:20 UTC (permalink / raw)
  To: linux-arm-kernel

Allow Integrator to be selected from the top level choice table again
for noMMU builds.  The Integrator platform can have ARM940 and ARM946
CPU tiles attached, which are MPU-based CPUs, and the recent conversion
of Integrator overlooked these.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 arch/arm/Kconfig                 | 4 ++++
 arch/arm/mach-integrator/Kconfig | 3 +--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ef25d453da94..398d19106d99 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -329,6 +329,10 @@ config ARCH_MULTIPLATFORM
 	select SPARSE_IRQ
 	select USE_OF
 
+config ARM_SINGLE_INTEGRATOR
+	bool "ARM Ltd. Integrator family (noMMU)"
+	depends on !MMU
+
 config ARCH_REALVIEW
 	bool "ARM Ltd. RealView family"
 	select ARCH_WANT_OPTIONAL_GPIOLIB
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 02d083489a26..c86f156ac21a 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -1,8 +1,7 @@
 config ARCH_INTEGRATOR
 	bool "ARM Ltd. Integrator family" if (ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6)
+	default y if ARM_SINGLE_INTEGRATOR
 	select ARM_AMBA
-	select ARM_PATCH_PHYS_VIRT if MMU
-	select AUTO_ZRELADDR
 	select COMMON_CLK
 	select COMMON_CLK_VERSATILE
 	select GENERIC_CLOCKEVENTS
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled
  2015-05-19 10:20 ` [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled Russell King
@ 2015-05-20 16:09   ` Arnd Bergmann
  0 siblings, 0 replies; 4+ messages in thread
From: Arnd Bergmann @ 2015-05-20 16:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday 19 May 2015 11:20:22 Russell King wrote:
> Commit dc680b989d51 ("ARM: fix multiplatform allmodcompile") went a
> little too far, and effectively prevented noMMU CPUs from ever being
> selectable.
> 
> Fix this by introducing a set of CPU_CLASS_xxx configuration symbols
> which control whether a class of CPU symbols are visible for selection,
> and arrange for these to be set according to the multiplatform class
> selected, or whenever multiplatform is itself disabled.
> 
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

Hi Russell,

sorry for dropping the ball on this myself. When we last talked about it,
I mentioned that I had an alternative approach. This is unfortunately
still based on the earlier idea of allowing !MMU in combination with
ARCH_MULTIPLATFORM, but I could easily rework it. I see that your patch
intentionally allows any CPU type to be selected on !MMU, and that
is what I had done as well, but we could also decide to limit !MMU
to the cores that actually don't have an MMU.

You also seem to (unintentionally?) allow ARMv5+ARMv6 !MMU builds
in your patch, which leads to build errors in randconfig builds.
Limiting Integrator to the core modules that don't have an MMU
would solve that, because they are all ARMv4 or ARMv5, and can
coexist in one kernel.

I have a similar patch for realview, as part of making that multiplatform,
and with both applied, we could just hide all the individual CPU
selection options.

Any further thoughts on this from your side?

	Arnd

8<---
>From b8dcfdd0fca9db1de7a4b03a9e8d9f9ce65d0a43 Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd@arndb.de>
Date: Wed, 25 Feb 2015 17:53:58 +0100
Subject: [PATCH] ARM: integrator: use explicit core module options

For consistency with the other platforms, this remove the CPU
selection logic in mm/Kconfig that was only used by integrator,
and adds specific options for each available core tile and core
module, which in turn select the correct CPUs.

This is consistent with the new way that we do it for realview
and all other platforms.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Linus Walleij <linus.walleij@linaro.org>

diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 02d083489a26..e936cf420b48 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -1,4 +1,4 @@
-config ARCH_INTEGRATOR
+menuconfig ARCH_INTEGRATOR
 	bool "ARM Ltd. Integrator family" if (ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6)
 	select ARM_AMBA
 	select ARM_PATCH_PHYS_VIRT if MMU
@@ -23,8 +23,6 @@ config ARCH_INTEGRATOR
 
 if ARCH_INTEGRATOR
 
-menu "Integrator Options"
-
 config ARCH_INTEGRATOR_AP
 	bool "Support Integrator/AP and Integrator/PP2 platforms"
 	select CLKSRC_MMIO
@@ -36,19 +34,6 @@ config ARCH_INTEGRATOR_AP
 	  Include support for the ARM(R) Integrator/AP and
 	  Integrator/PP2 platforms.
 
-config ARCH_INTEGRATOR_CP
-	bool "Support Integrator/CP platform"
-	select ARCH_CINTEGRATOR
-	select ARM_TIMER_SP804
-	select SERIAL_AMBA_PL011 if TTY
-	select SERIAL_AMBA_PL011_CONSOLE if TTY
-	select SOC_BUS
-	help
-	  Include support for the ARM(R) Integrator CP platform.
-
-config ARCH_CINTEGRATOR
-	bool
-
 config INTEGRATOR_IMPD1
 	bool "Include support for Integrator/IM-PD1"
 	depends on ARCH_INTEGRATOR_AP
@@ -63,6 +48,119 @@ config INTEGRATOR_IMPD1
 	  To compile this driver as a module, choose M here: the
 	  module will be called impd1.
 
-endmenu
+config INTEGRATOR_CM7TDMI
+	bool "Integrator/CM7TDMI core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V4 && !MMU
+	select CPU_ARM7TDMI
+
+config INTEGRATOR_CM720T
+	bool "Integrator/CM720T core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V4T
+	select CPU_ARM720T
+
+config INTEGRATOR_CM740T
+	bool "Integrator/CM740T core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V4T && !MMU
+	select CPU_ARM740T
+
+config INTEGRATOR_CM920T
+	bool "Integrator/CM920T core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V4T
+	select CPU_ARM920T
+
+config INTEGRATOR_CM922T_XA10
+	bool "Integrator/CM922T-XA10 core module"
+	depends on ARCH_MULTI_V4T
+	depends on ARCH_INTEGRATOR_AP
+	select CPU_ARM922T
+
+config INTEGRATOR_CM926EJS
+	bool "Integrator/CM926EJ-S core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V5
+	select CPU_ARM926T
+
+config INTEGRATOR_CM940T
+	bool "Integrator/CM940T core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V4T && !MMU
+	select CPU_ARM940T
+
+config INTEGRATOR_CM946ES
+	bool "Integrator/CM946E-S core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V5 && !MMU
+	select CPU_ARM946E
+
+config INTEGRATOR_CM966ES
+	bool "Integrator/CM966E-S core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on BROKEN # no kernel support
+
+config INTEGRATOR_CM10200E_REV0
+	bool "Integrator/CM10200E rev.0 core module"
+	depends on ARCH_INTEGRATOR_AP && n
+	depends on ARCH_MULTI_V5
+	select CPU_ARM1020
+
+config INTEGRATOR_CM10200E
+	bool "Integrator/CM10200E core module"
+	depends on ARCH_INTEGRATOR_AP && n
+	depends on ARCH_MULTI_V5
+	select CPU_ARM1020E
+
+config INTEGRATOR_CM10220E
+	bool "Integrator/CM10220E core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V5
+	select CPU_ARM1022
+
+config INTEGRATOR_CM1026EJS
+	bool "Integrator/CM1026EJ-S core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V5
+	select CPU_ARM1026
+
+config INTEGRATOR_CM1136JFS
+	bool "Integrator/CM1136JF-S core module"
+	depends on ARCH_INTEGRATOR_AP
+	depends on ARCH_MULTI_V6
+	select CPU_V6
+
+config ARCH_INTEGRATOR_CP
+	bool "Support Integrator/CP platform"
+	depends on (!MMU || ARCH_MULTI_V5 || ARCH_MULTI_V6)
+	select ARM_TIMER_SP804
+	select SERIAL_AMBA_PL011 if TTY
+	select SERIAL_AMBA_PL011_CONSOLE if TTY
+	select SOC_BUS
+	help
+	  Include support for the ARM(R) Integrator CP platform.
+
+config INTEGRATOR_CT7T
+	bool "Integrator/CT7TD (ARM7TDMI) core tile"
+	depends on ARCH_INTEGRATOR_CP
+	depends on ARCH_MULTI_V4T && !MMU
+	select CPU_ARM7TDMI
+
+config INTEGRATOR_CT926
+	bool "Integrator/CT926 (ARM926EJ-S) core tile"
+	depends on ARCH_INTEGRATOR_CP
+	depends on ARCH_MULTI_V5
+	select CPU_ARM926T
+
+config INTEGRATOR_CTB36
+	bool "Integrator/CTB36 (ARM1136JF-S) core tile"
+	depends on ARCH_INTEGRATOR_CP
+	depends on ARCH_MULTI_V6
+	select CPU_V6
+
+config ARCH_CINTEGRATOR
+	depends on ARCH_INTEGRATOR_CP
+	def_bool y
 
 endif

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-05-20 16:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-19 10:19 [PATCH 0/2] Fix Integrator for noMMU Russell King - ARM Linux
2015-05-19 10:20 ` [PATCH 1/2] ARM: allow CPUs to be selected when non-multiplatform is enabled Russell King
2015-05-20 16:09   ` Arnd Bergmann
2015-05-19 10:20 ` [PATCH 2/2] ARM: allow Integrator to be selected for noMMU builds Russell King

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.