* [PATCH v2 0/3] Separate generic header usage from ARCH_MULTIPLATFORM
@ 2013-05-14 11:27 Jonathan Austin
2013-05-14 11:27 ` [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM Jonathan Austin
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Jonathan Austin @ 2013-05-14 11:27 UTC (permalink / raw)
To: linux-arm-kernel
The original aim of this series was to restore the ability to build a NOMMU
kernel for Versatile Express, something that was lost when we converted
ARCH_VEXPRESS for ARCH_MULTIPLATFORM.
In order to do this, it is necessary to abstract the use of generic headers
from selection of ARCH_MULTIPLATFORM so that the two can be used separately.
This is necessary becuase building a multiplatform kernel for processors
without and MMU doesn't make sense (it is necessary to hardcode certain mem-map
related data) and the versatile express can host NOMMU processors.
This series performs this separation, and then goes on to add a 'dummy'
ARCH_VEXPRESS_NOMMU platform that can be selected as standalone platform.
Patch 2 was sent to the list as an RFC some time ago where it was ACKd, but
alone is not sufficient to solve the problem, hence this follow-up series.
Changes since V1:
- Rebase on to 3.10-rc1: fixup conflict from CONFIG_UNCOMPRESS_INCLUDE-foo
Jonathan Austin (3):
ARM: allow platforms to use generic headers without
ARCH_MULTIPLATFORM
ARM: nommu: re-enable use of vexpress without ARCH_MULTIPLATFORM
ARM: vexpress-nommu: add a Makefile.boot to restore single-platform
build
arch/arm/Kconfig | 21 +++++++++++++++++++++
arch/arm/Kconfig.debug | 4 ++--
arch/arm/Makefile | 2 +-
arch/arm/include/asm/timex.h | 2 +-
arch/arm/mach-mvebu/Makefile | 2 +-
arch/arm/mach-omap2/Makefile | 2 +-
arch/arm/mach-vexpress/Makefile | 2 +-
arch/arm/mach-vexpress/Makefile.boot | 4 ++++
arch/arm/plat-omap/Makefile | 2 +-
arch/arm/plat-orion/Makefile | 2 +-
arch/arm/plat-versatile/Makefile | 2 +-
11 files changed, 35 insertions(+), 10 deletions(-)
create mode 100644 arch/arm/mach-vexpress/Makefile.boot
--
1.7.9.5
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-14 11:27 [PATCH v2 0/3] Separate generic header usage from ARCH_MULTIPLATFORM Jonathan Austin @ 2013-05-14 11:27 ` Jonathan Austin 2013-05-14 15:07 ` Rob Herring 2013-05-14 11:27 ` [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress " Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 3/3] ARM: vexpress-nommu: add a Makefile.boot to restore single-platform build Jonathan Austin 2 siblings, 1 reply; 10+ messages in thread From: Jonathan Austin @ 2013-05-14 11:27 UTC (permalink / raw) To: linux-arm-kernel Currently the use of generic mach headers is only is controlled by the same config option as selection of a multiplatform kernel (i.e. ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the generic headers but still build a single platform kernel. One such example is when using the vexpress platform with a core that does not have an MMU; a multiplatform kernel does not make sense, but use of the generic headers is required by the vexpress platform since 617276307cd4c ("ARM: vexpress: convert to multi-platform"). This patch untangles these two options by introducing a new ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other platforms can now select ARM_GENERIC_HEADERS independently. Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> CC: Rob Herring <rob.herring@calxeda.com> CC: Pawel Moll <pawel.moll@arm.com> CC: Jason Cooper <jason@lakedaemon.net> CC: Andrew Lunn <andrew@lunn.ch> CC: Gregory Clement <gregory.clement@free-electrons.com> CC: Tony Lindgren <tony@atomide.com> CC: Stephen Boyd <sboyd@codeaurora.org> CC: Will Deacon <will.deacon@arm.com> --- arch/arm/Kconfig | 4 ++++ arch/arm/Kconfig.debug | 4 ++-- arch/arm/Makefile | 2 +- arch/arm/include/asm/timex.h | 2 +- arch/arm/mach-mvebu/Makefile | 2 +- arch/arm/mach-omap2/Makefile | 2 +- arch/arm/mach-vexpress/Makefile | 2 +- arch/arm/plat-omap/Makefile | 2 +- arch/arm/plat-orion/Makefile | 2 +- arch/arm/plat-versatile/Makefile | 2 +- 10 files changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d423d58..408eb33 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -206,6 +206,9 @@ config NEED_RET_TO_USER config ARCH_MTD_XIP bool +config ARM_GENERIC_HEADERS + bool + config VECTORS_BASE hex default 0xffff0000 if MMU || CPU_HIGH_VECTOR @@ -295,6 +298,7 @@ config ARCH_MULTIPLATFORM select MULTI_IRQ_HANDLER select SPARSE_IRQ select USE_OF + select ARM_GENERIC_HEADERS config ARCH_INTEGRATOR bool "ARM Ltd. Integrator family" diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 1d41908..ede909b 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug @@ -652,13 +652,13 @@ config DEBUG_LL_INCLUDE config DEBUG_UNCOMPRESS bool - default y if ARCH_MULTIPLATFORM && DEBUG_LL && \ + default y if ARM_GENERIC_HEADERS && DEBUG_LL && \ !DEBUG_OMAP2PLUS_UART && \ !DEBUG_TEGRA_UART config UNCOMPRESS_INCLUDE string - default "debug/uncompress.h" if ARCH_MULTIPLATFORM + default "debug/uncompress.h" if ARM_GENERIC_HEADERS default "mach/uncompress.h" config EARLY_PRINTK diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 4737408..ab0416f 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -229,7 +229,7 @@ endif machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y)) -ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) +ifneq ($(CONFIG_ARM_GENERIC_HEADERS),y) ifeq ($(KBUILD_SRC),) KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) else diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h index 83f2aa8..586a9c2 100644 --- a/arch/arm/include/asm/timex.h +++ b/arch/arm/include/asm/timex.h @@ -12,7 +12,7 @@ #ifndef _ASMARM_TIMEX_H #define _ASMARM_TIMEX_H -#ifdef CONFIG_ARCH_MULTIPLATFORM +#ifdef CONFIG_ARM_GENERIC_HEADERS #define CLOCK_TICK_RATE 1000000 #else #include <mach/timex.h> diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile index 2d04f0e..d3c0e0b 100644 --- a/arch/arm/mach-mvebu/Makefile +++ b/arch/arm/mach-mvebu/Makefile @@ -1,4 +1,4 @@ -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ -I$(srctree)/arch/arm/plat-orion/include AFLAGS_coherency_ll.o := -Wa,-march=armv7-a diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 55a9d67..ab204bc 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ -I$(srctree)/arch/arm/plat-omap/include # Common support diff --git a/arch/arm/mach-vexpress/Makefile b/arch/arm/mach-vexpress/Makefile index 42703e8..6768e7f 100644 --- a/arch/arm/mach-vexpress/Makefile +++ b/arch/arm/mach-vexpress/Makefile @@ -1,7 +1,7 @@ # # Makefile for the linux kernel. # -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ -I$(srctree)/arch/arm/plat-versatile/include obj-y := v2m.o diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index 3119941..3e1ba10 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile @@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/arch/arm/plat-omap/include # Common support obj-y := sram.o dma.o counter_32k.o diff --git a/arch/arm/plat-orion/Makefile b/arch/arm/plat-orion/Makefile index 9433605..79a042ed 100644 --- a/arch/arm/plat-orion/Makefile +++ b/arch/arm/plat-orion/Makefile @@ -1,7 +1,7 @@ # # Makefile for the linux kernel. # -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include orion-gpio-$(CONFIG_GPIOLIB) += gpio.o obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o diff --git a/arch/arm/plat-versatile/Makefile b/arch/arm/plat-versatile/Makefile index f88d448..19495c6 100644 --- a/arch/arm/plat-versatile/Makefile +++ b/arch/arm/plat-versatile/Makefile @@ -1,4 +1,4 @@ -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include obj-$(CONFIG_PLAT_VERSATILE_CLOCK) += clock.o obj-$(CONFIG_PLAT_VERSATILE_CLCD) += clcd.o -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-14 11:27 ` [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM Jonathan Austin @ 2013-05-14 15:07 ` Rob Herring 2013-05-15 23:33 ` Tony Lindgren 2013-05-21 16:36 ` Jonathan Austin 0 siblings, 2 replies; 10+ messages in thread From: Rob Herring @ 2013-05-14 15:07 UTC (permalink / raw) To: linux-arm-kernel On 05/14/2013 06:27 AM, Jonathan Austin wrote: > Currently the use of generic mach headers is only is controlled by the same > config option as selection of a multiplatform kernel (i.e. > ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the > generic headers but still build a single platform kernel. > > One such example is when using the vexpress platform with a core that does > not have an MMU; a multiplatform kernel does not make sense, but use of the > generic headers is required by the vexpress platform since 617276307cd4c > ("ARM: vexpress: convert to multi-platform"). > > This patch untangles these two options by introducing a new > ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other > platforms can now select ARM_GENERIC_HEADERS independently. I find this name confusing. It is no headers you are selecting and generic is a bit overused IMHO. So how about something like NEED_NO_MACH_HEADERS to somewhat align to the other header related config options (e.g. NEED_MACH_GPIO_H). Rob > Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> > CC: Rob Herring <rob.herring@calxeda.com> > CC: Pawel Moll <pawel.moll@arm.com> > CC: Jason Cooper <jason@lakedaemon.net> > CC: Andrew Lunn <andrew@lunn.ch> > CC: Gregory Clement <gregory.clement@free-electrons.com> > CC: Tony Lindgren <tony@atomide.com> > CC: Stephen Boyd <sboyd@codeaurora.org> > CC: Will Deacon <will.deacon@arm.com> > --- > arch/arm/Kconfig | 4 ++++ > arch/arm/Kconfig.debug | 4 ++-- > arch/arm/Makefile | 2 +- > arch/arm/include/asm/timex.h | 2 +- > arch/arm/mach-mvebu/Makefile | 2 +- > arch/arm/mach-omap2/Makefile | 2 +- > arch/arm/mach-vexpress/Makefile | 2 +- > arch/arm/plat-omap/Makefile | 2 +- > arch/arm/plat-orion/Makefile | 2 +- > arch/arm/plat-versatile/Makefile | 2 +- > 10 files changed, 14 insertions(+), 10 deletions(-) > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index d423d58..408eb33 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -206,6 +206,9 @@ config NEED_RET_TO_USER > config ARCH_MTD_XIP > bool > > +config ARM_GENERIC_HEADERS > + bool > + > config VECTORS_BASE > hex > default 0xffff0000 if MMU || CPU_HIGH_VECTOR > @@ -295,6 +298,7 @@ config ARCH_MULTIPLATFORM > select MULTI_IRQ_HANDLER > select SPARSE_IRQ > select USE_OF > + select ARM_GENERIC_HEADERS > > config ARCH_INTEGRATOR > bool "ARM Ltd. Integrator family" > diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug > index 1d41908..ede909b 100644 > --- a/arch/arm/Kconfig.debug > +++ b/arch/arm/Kconfig.debug > @@ -652,13 +652,13 @@ config DEBUG_LL_INCLUDE > > config DEBUG_UNCOMPRESS > bool > - default y if ARCH_MULTIPLATFORM && DEBUG_LL && \ > + default y if ARM_GENERIC_HEADERS && DEBUG_LL && \ > !DEBUG_OMAP2PLUS_UART && \ > !DEBUG_TEGRA_UART > > config UNCOMPRESS_INCLUDE > string > - default "debug/uncompress.h" if ARCH_MULTIPLATFORM > + default "debug/uncompress.h" if ARM_GENERIC_HEADERS > default "mach/uncompress.h" > > config EARLY_PRINTK > diff --git a/arch/arm/Makefile b/arch/arm/Makefile > index 4737408..ab0416f 100644 > --- a/arch/arm/Makefile > +++ b/arch/arm/Makefile > @@ -229,7 +229,7 @@ endif > machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) > platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y)) > > -ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) > +ifneq ($(CONFIG_ARM_GENERIC_HEADERS),y) > ifeq ($(KBUILD_SRC),) > KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) > else > diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h > index 83f2aa8..586a9c2 100644 > --- a/arch/arm/include/asm/timex.h > +++ b/arch/arm/include/asm/timex.h > @@ -12,7 +12,7 @@ > #ifndef _ASMARM_TIMEX_H > #define _ASMARM_TIMEX_H > > -#ifdef CONFIG_ARCH_MULTIPLATFORM > +#ifdef CONFIG_ARM_GENERIC_HEADERS > #define CLOCK_TICK_RATE 1000000 > #else > #include <mach/timex.h> > diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile > index 2d04f0e..d3c0e0b 100644 > --- a/arch/arm/mach-mvebu/Makefile > +++ b/arch/arm/mach-mvebu/Makefile > @@ -1,4 +1,4 @@ > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ > -I$(srctree)/arch/arm/plat-orion/include > > AFLAGS_coherency_ll.o := -Wa,-march=armv7-a > diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile > index 55a9d67..ab204bc 100644 > --- a/arch/arm/mach-omap2/Makefile > +++ b/arch/arm/mach-omap2/Makefile > @@ -2,7 +2,7 @@ > # Makefile for the linux kernel. > # > > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ > -I$(srctree)/arch/arm/plat-omap/include > > # Common support > diff --git a/arch/arm/mach-vexpress/Makefile b/arch/arm/mach-vexpress/Makefile > index 42703e8..6768e7f 100644 > --- a/arch/arm/mach-vexpress/Makefile > +++ b/arch/arm/mach-vexpress/Makefile > @@ -1,7 +1,7 @@ > # > # Makefile for the linux kernel. > # > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ > -I$(srctree)/arch/arm/plat-versatile/include > > obj-y := v2m.o > diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile > index 3119941..3e1ba10 100644 > --- a/arch/arm/plat-omap/Makefile > +++ b/arch/arm/plat-omap/Makefile > @@ -2,7 +2,7 @@ > # Makefile for the linux kernel. > # > > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/arch/arm/plat-omap/include > > # Common support > obj-y := sram.o dma.o counter_32k.o > diff --git a/arch/arm/plat-orion/Makefile b/arch/arm/plat-orion/Makefile > index 9433605..79a042ed 100644 > --- a/arch/arm/plat-orion/Makefile > +++ b/arch/arm/plat-orion/Makefile > @@ -1,7 +1,7 @@ > # > # Makefile for the linux kernel. > # > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include > > orion-gpio-$(CONFIG_GPIOLIB) += gpio.o > obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o > diff --git a/arch/arm/plat-versatile/Makefile b/arch/arm/plat-versatile/Makefile > index f88d448..19495c6 100644 > --- a/arch/arm/plat-versatile/Makefile > +++ b/arch/arm/plat-versatile/Makefile > @@ -1,4 +1,4 @@ > -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include > +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include > > obj-$(CONFIG_PLAT_VERSATILE_CLOCK) += clock.o > obj-$(CONFIG_PLAT_VERSATILE_CLCD) += clcd.o > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-14 15:07 ` Rob Herring @ 2013-05-15 23:33 ` Tony Lindgren 2013-05-21 16:25 ` Jonathan Austin 2013-05-21 16:36 ` Jonathan Austin 1 sibling, 1 reply; 10+ messages in thread From: Tony Lindgren @ 2013-05-15 23:33 UTC (permalink / raw) To: linux-arm-kernel * Rob Herring <robherring2@gmail.com> [130514 08:12]: > On 05/14/2013 06:27 AM, Jonathan Austin wrote: > > Currently the use of generic mach headers is only is controlled by the same > > config option as selection of a multiplatform kernel (i.e. > > ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the > > generic headers but still build a single platform kernel. > > > > One such example is when using the vexpress platform with a core that does > > not have an MMU; a multiplatform kernel does not make sense, but use of the > > generic headers is required by the vexpress platform since 617276307cd4c > > ("ARM: vexpress: convert to multi-platform"). > > > > This patch untangles these two options by introducing a new > > ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other > > platforms can now select ARM_GENERIC_HEADERS independently. > > I find this name confusing. It is no headers you are selecting and > generic is a bit overused IMHO. So how about something like > NEED_NO_MACH_HEADERS to somewhat align to the other header related > config options (e.g. NEED_MACH_GPIO_H). Hmm it _looks_ like this won't allow the drivers again to #include <plat/*.h> and <mach/*.h>. Have you checked that? It might be worth checking as we really don't want to go back there again.. Currently arch/arm/Makefile has: ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) ifeq ($(KBUILD_SRC),) KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) else KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) endif endif So you may need to do something there to prevent drivers from again including machdirs and platdirs. Regards, Tony ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-15 23:33 ` Tony Lindgren @ 2013-05-21 16:25 ` Jonathan Austin 2013-05-23 2:06 ` Tony Lindgren 0 siblings, 1 reply; 10+ messages in thread From: Jonathan Austin @ 2013-05-21 16:25 UTC (permalink / raw) To: linux-arm-kernel Hi Tony, On 16/05/13 00:33, Tony Lindgren wrote: > * Rob Herring <robherring2@gmail.com> [130514 08:12]: >> On 05/14/2013 06:27 AM, Jonathan Austin wrote: >>> Currently the use of generic mach headers is only is controlled by the same >>> config option as selection of a multiplatform kernel (i.e. >>> ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the >>> generic headers but still build a single platform kernel. >>> >>> One such example is when using the vexpress platform with a core that does >>> not have an MMU; a multiplatform kernel does not make sense, but use of the >>> generic headers is required by the vexpress platform since 617276307cd4c >>> ("ARM: vexpress: convert to multi-platform"). >>> >>> This patch untangles these two options by introducing a new >>> ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other >>> platforms can now select ARM_GENERIC_HEADERS independently. >> >> I find this name confusing. It is no headers you are selecting and >> generic is a bit overused IMHO. So how about something like >> NEED_NO_MACH_HEADERS to somewhat align to the other header related >> config options (e.g. NEED_MACH_GPIO_H). > > Hmm it _looks_ like this won't allow the drivers again to > #include <plat/*.h> and <mach/*.h>. Have you checked that? > > It might be worth checking as we really don't want to go back there > again.. Currently arch/arm/Makefile has: > > ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) > ifeq ($(KBUILD_SRC),) > KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) > else > KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) > endif > endif > > So you may need to do something there to prevent drivers from again > including machdirs and platdirs. > If I've understood you correctly, then this patch already deals with this case (though it isn't hugely obvious from the diff...) by replacing CONFIG_ARCH_MULTIPLATFORM in your example above with CONFIG_ARM_GENERIC_HEADERS (soon to be renamed, as per Rob's suggestion). Because ARCH_MULTIPLATFORM selects CONFIG_(FORMERLY_KNOWN_AS_)ARM_GENERIC_HEADERS it shouldn't be possible for anything multi-platform to start including <plat/*.h> and <mach/*.h> again. This seems to be the right thing to do because it also makes it impossible to include <plat/*.h> and <mach/*.h> in !MULTIPLATFORM situations that don't need mach/plat headers, like the VEXPRESS_NOMMU case. Is that what you were getting at? Please let me know if not... Thanks, Jonny > Regards, > > Tony > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-21 16:25 ` Jonathan Austin @ 2013-05-23 2:06 ` Tony Lindgren 0 siblings, 0 replies; 10+ messages in thread From: Tony Lindgren @ 2013-05-23 2:06 UTC (permalink / raw) To: linux-arm-kernel * Jonathan Austin <jonathan.austin@arm.com> [130521 09:30]: > Hi Tony, > > On 16/05/13 00:33, Tony Lindgren wrote: > >* Rob Herring <robherring2@gmail.com> [130514 08:12]: > >>On 05/14/2013 06:27 AM, Jonathan Austin wrote: > >>>Currently the use of generic mach headers is only is controlled by the same > >>>config option as selection of a multiplatform kernel (i.e. > >>>ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the > >>>generic headers but still build a single platform kernel. > >>> > >>>One such example is when using the vexpress platform with a core that does > >>>not have an MMU; a multiplatform kernel does not make sense, but use of the > >>>generic headers is required by the vexpress platform since 617276307cd4c > >>>("ARM: vexpress: convert to multi-platform"). > >>> > >>>This patch untangles these two options by introducing a new > >>>ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other > >>>platforms can now select ARM_GENERIC_HEADERS independently. > >> > >>I find this name confusing. It is no headers you are selecting and > >>generic is a bit overused IMHO. So how about something like > >>NEED_NO_MACH_HEADERS to somewhat align to the other header related > >>config options (e.g. NEED_MACH_GPIO_H). > > > >Hmm it _looks_ like this won't allow the drivers again to > >#include <plat/*.h> and <mach/*.h>. Have you checked that? > > > >It might be worth checking as we really don't want to go back there > >again.. Currently arch/arm/Makefile has: > > > >ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) > >ifeq ($(KBUILD_SRC),) > >KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) > >else > >KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) > >endif > >endif > > > >So you may need to do something there to prevent drivers from again > >including machdirs and platdirs. > > > If I've understood you correctly, then this patch already deals with > this case (though it isn't hugely obvious from the diff...) by > replacing CONFIG_ARCH_MULTIPLATFORM in your example above with > CONFIG_ARM_GENERIC_HEADERS (soon to be renamed, as per Rob's > suggestion). > > Because ARCH_MULTIPLATFORM selects > CONFIG_(FORMERLY_KNOWN_AS_)ARM_GENERIC_HEADERS it shouldn't be > possible for anything multi-platform to start including <plat/*.h> > and <mach/*.h> again. > > This seems to be the right thing to do because it also makes it > impossible to include <plat/*.h> and <mach/*.h> in !MULTIPLATFORM > situations that don't need mach/plat headers, like the > VEXPRESS_NOMMU case. > > Is that what you were getting at? Please let me know if not... Yes that's exactly what I was worried about as it was a bit hard to see from the patch. Thanks for checking it. Regards, Tony ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM 2013-05-14 15:07 ` Rob Herring 2013-05-15 23:33 ` Tony Lindgren @ 2013-05-21 16:36 ` Jonathan Austin 1 sibling, 0 replies; 10+ messages in thread From: Jonathan Austin @ 2013-05-21 16:36 UTC (permalink / raw) To: linux-arm-kernel Hi Rob, On 14/05/13 16:07, Rob Herring wrote: > On 05/14/2013 06:27 AM, Jonathan Austin wrote: >> Currently the use of generic mach headers is only is controlled by the same >> config option as selection of a multiplatform kernel (i.e. >> ARCH_MULTIPLATFORM). However, there are cases where it is valid to use the >> generic headers but still build a single platform kernel. >> >> One such example is when using the vexpress platform with a core that does >> not have an MMU; a multiplatform kernel does not make sense, but use of the >> generic headers is required by the vexpress platform since 617276307cd4c >> ("ARM: vexpress: convert to multi-platform"). >> >> This patch untangles these two options by introducing a new >> ARM_GENERIC_HEADERS config option that ARCH_MULTIPLATFORM selects. Other >> platforms can now select ARM_GENERIC_HEADERS independently. > > I find this name confusing. It is no headers you are selecting and > generic is a bit overused IMHO. So how about something like > NEED_NO_MACH_HEADERS to somewhat align to the other header related > config options (e.g. NEED_MACH_GPIO_H). NEED_NO_MACH_HEADERS is fine by me... Expresses things well. I'll post a v3 around -rc3 with this changed. Thanks, Jonny > > Rob > >> Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> >> CC: Rob Herring <rob.herring@calxeda.com> >> CC: Pawel Moll <pawel.moll@arm.com> >> CC: Jason Cooper <jason@lakedaemon.net> >> CC: Andrew Lunn <andrew@lunn.ch> >> CC: Gregory Clement <gregory.clement@free-electrons.com> >> CC: Tony Lindgren <tony@atomide.com> >> CC: Stephen Boyd <sboyd@codeaurora.org> >> CC: Will Deacon <will.deacon@arm.com> >> --- >> arch/arm/Kconfig | 4 ++++ >> arch/arm/Kconfig.debug | 4 ++-- >> arch/arm/Makefile | 2 +- >> arch/arm/include/asm/timex.h | 2 +- >> arch/arm/mach-mvebu/Makefile | 2 +- >> arch/arm/mach-omap2/Makefile | 2 +- >> arch/arm/mach-vexpress/Makefile | 2 +- >> arch/arm/plat-omap/Makefile | 2 +- >> arch/arm/plat-orion/Makefile | 2 +- >> arch/arm/plat-versatile/Makefile | 2 +- >> 10 files changed, 14 insertions(+), 10 deletions(-) >> >> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig >> index d423d58..408eb33 100644 >> --- a/arch/arm/Kconfig >> +++ b/arch/arm/Kconfig >> @@ -206,6 +206,9 @@ config NEED_RET_TO_USER >> config ARCH_MTD_XIP >> bool >> >> +config ARM_GENERIC_HEADERS >> + bool >> + >> config VECTORS_BASE >> hex >> default 0xffff0000 if MMU || CPU_HIGH_VECTOR >> @@ -295,6 +298,7 @@ config ARCH_MULTIPLATFORM >> select MULTI_IRQ_HANDLER >> select SPARSE_IRQ >> select USE_OF >> + select ARM_GENERIC_HEADERS >> >> config ARCH_INTEGRATOR >> bool "ARM Ltd. Integrator family" >> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug >> index 1d41908..ede909b 100644 >> --- a/arch/arm/Kconfig.debug >> +++ b/arch/arm/Kconfig.debug >> @@ -652,13 +652,13 @@ config DEBUG_LL_INCLUDE >> >> config DEBUG_UNCOMPRESS >> bool >> - default y if ARCH_MULTIPLATFORM && DEBUG_LL && \ >> + default y if ARM_GENERIC_HEADERS && DEBUG_LL && \ >> !DEBUG_OMAP2PLUS_UART && \ >> !DEBUG_TEGRA_UART >> >> config UNCOMPRESS_INCLUDE >> string >> - default "debug/uncompress.h" if ARCH_MULTIPLATFORM >> + default "debug/uncompress.h" if ARM_GENERIC_HEADERS >> default "mach/uncompress.h" >> >> config EARLY_PRINTK >> diff --git a/arch/arm/Makefile b/arch/arm/Makefile >> index 4737408..ab0416f 100644 >> --- a/arch/arm/Makefile >> +++ b/arch/arm/Makefile >> @@ -229,7 +229,7 @@ endif >> machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) >> platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y)) >> >> -ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y) >> +ifneq ($(CONFIG_ARM_GENERIC_HEADERS),y) >> ifeq ($(KBUILD_SRC),) >> KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs)) >> else >> diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h >> index 83f2aa8..586a9c2 100644 >> --- a/arch/arm/include/asm/timex.h >> +++ b/arch/arm/include/asm/timex.h >> @@ -12,7 +12,7 @@ >> #ifndef _ASMARM_TIMEX_H >> #define _ASMARM_TIMEX_H >> >> -#ifdef CONFIG_ARCH_MULTIPLATFORM >> +#ifdef CONFIG_ARM_GENERIC_HEADERS >> #define CLOCK_TICK_RATE 1000000 >> #else >> #include <mach/timex.h> >> diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile >> index 2d04f0e..d3c0e0b 100644 >> --- a/arch/arm/mach-mvebu/Makefile >> +++ b/arch/arm/mach-mvebu/Makefile >> @@ -1,4 +1,4 @@ >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ >> -I$(srctree)/arch/arm/plat-orion/include >> >> AFLAGS_coherency_ll.o := -Wa,-march=armv7-a >> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile >> index 55a9d67..ab204bc 100644 >> --- a/arch/arm/mach-omap2/Makefile >> +++ b/arch/arm/mach-omap2/Makefile >> @@ -2,7 +2,7 @@ >> # Makefile for the linux kernel. >> # >> >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ >> -I$(srctree)/arch/arm/plat-omap/include >> >> # Common support >> diff --git a/arch/arm/mach-vexpress/Makefile b/arch/arm/mach-vexpress/Makefile >> index 42703e8..6768e7f 100644 >> --- a/arch/arm/mach-vexpress/Makefile >> +++ b/arch/arm/mach-vexpress/Makefile >> @@ -1,7 +1,7 @@ >> # >> # Makefile for the linux kernel. >> # >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include \ >> -I$(srctree)/arch/arm/plat-versatile/include >> >> obj-y := v2m.o >> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile >> index 3119941..3e1ba10 100644 >> --- a/arch/arm/plat-omap/Makefile >> +++ b/arch/arm/plat-omap/Makefile >> @@ -2,7 +2,7 @@ >> # Makefile for the linux kernel. >> # >> >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/arch/arm/plat-omap/include >> >> # Common support >> obj-y := sram.o dma.o counter_32k.o >> diff --git a/arch/arm/plat-orion/Makefile b/arch/arm/plat-orion/Makefile >> index 9433605..79a042ed 100644 >> --- a/arch/arm/plat-orion/Makefile >> +++ b/arch/arm/plat-orion/Makefile >> @@ -1,7 +1,7 @@ >> # >> # Makefile for the linux kernel. >> # >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include >> >> orion-gpio-$(CONFIG_GPIOLIB) += gpio.o >> obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o >> diff --git a/arch/arm/plat-versatile/Makefile b/arch/arm/plat-versatile/Makefile >> index f88d448..19495c6 100644 >> --- a/arch/arm/plat-versatile/Makefile >> +++ b/arch/arm/plat-versatile/Makefile >> @@ -1,4 +1,4 @@ >> -ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include >> +ccflags-$(CONFIG_ARM_GENERIC_HEADERS) := -I$(srctree)/$(src)/include >> >> obj-$(CONFIG_PLAT_VERSATILE_CLOCK) += clock.o >> obj-$(CONFIG_PLAT_VERSATILE_CLCD) += clcd.o >> > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress without ARCH_MULTIPLATFORM 2013-05-14 11:27 [PATCH v2 0/3] Separate generic header usage from ARCH_MULTIPLATFORM Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM Jonathan Austin @ 2013-05-14 11:27 ` Jonathan Austin 2013-05-14 11:31 ` Pawel Moll 2013-05-14 11:27 ` [PATCH v2 3/3] ARM: vexpress-nommu: add a Makefile.boot to restore single-platform build Jonathan Austin 2 siblings, 1 reply; 10+ messages in thread From: Jonathan Austin @ 2013-05-14 11:27 UTC (permalink / raw) To: linux-arm-kernel Since 617276307cd4c ("ARM: vexpress: convert to multi-platform") it has been impossible to select ARCH_VEXPRESS without ARCH_MULTIPLATFORM. ARCH_MULTIPLATFORM doesn't make sense for NOMMU targets, not least because of the need to hard-code the memory map. However, it should still be possible to run NOMMU kernels on top of the Versatile Express by selecting it as the only platform. This patch creates a shim ARCH_VEXPRESS_NOMMU config option in the 'choice' for "ARM system type" to make this possible again. Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Acked-by: Nicolas Pitre <nico@fluxnic.net> Acked-by: Arnd Bergmann <arnd@arndb.de> CC: Pawel Moll <pawel.moll@arm.com> --- arch/arm/Kconfig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 408eb33..541d90e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -350,6 +350,23 @@ config ARCH_VERSATILE help This enables support for ARM Ltd Versatile board. +config ARCH_VEXPRESS_NOMMU + bool "ARM Ltd. Versatile Express family for NOMMU" + depends on !MMU + select ARCH_VEXPRESS + select SPARSE_IRQ + select ARM_GENERIC_HEADERS + help + This option enables support for systems using Cortex processor based + ARM core and logic (FPGA) tiles on the Versatile Express motherboard, + in configurations WITHOUT an MMU. You must boot using a Flattened + Device Tree - the traditional ATAGs boot method is not usable with + this configuration. + + If your system has an MMU and you want to make use of it, you + should instead choose to build a multiplatform kernel and + select ARCH_VEXPRESS + config ARCH_AT91 bool "Atmel AT91" select ARCH_REQUIRE_GPIOLIB -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress without ARCH_MULTIPLATFORM 2013-05-14 11:27 ` [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress " Jonathan Austin @ 2013-05-14 11:31 ` Pawel Moll 0 siblings, 0 replies; 10+ messages in thread From: Pawel Moll @ 2013-05-14 11:31 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2013-05-14 at 12:27 +0100, Jonathan Austin wrote: > Since 617276307cd4c ("ARM: vexpress: convert to multi-platform") it has been > impossible to select ARCH_VEXPRESS without ARCH_MULTIPLATFORM. > > ARCH_MULTIPLATFORM doesn't make sense for NOMMU targets, not least because > of the need to hard-code the memory map. However, it should still be > possible to run NOMMU kernels on top of the Versatile Express by selecting > it as the only platform. > > This patch creates a shim ARCH_VEXPRESS_NOMMU config option in the 'choice' > for "ARM system type" to make this possible again. > > Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> > Signed-off-by: Will Deacon <will.deacon@arm.com> > Acked-by: Nicolas Pitre <nico@fluxnic.net> > Acked-by: Arnd Bergmann <arnd@arndb.de> > CC: Pawel Moll <pawel.moll@arm.com> Acked-by: Pawel Moll <pawel.moll@arm.com> Thanks! Pawel ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/3] ARM: vexpress-nommu: add a Makefile.boot to restore single-platform build 2013-05-14 11:27 [PATCH v2 0/3] Separate generic header usage from ARCH_MULTIPLATFORM Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress " Jonathan Austin @ 2013-05-14 11:27 ` Jonathan Austin 2 siblings, 0 replies; 10+ messages in thread From: Jonathan Austin @ 2013-05-14 11:27 UTC (permalink / raw) To: linux-arm-kernel When a single-platform kernel is built, a machine-specific Makefile.boot is expected. In the move to a multiplatform kernels this was removed for vexpress. Assuming AUTO_ZRELADDR is selected and a DT is used, the values recorded in it are no-longer required. However, the missing file breaks building of a single platform kernel for vexpress, such as when using vexpress and a platform without an MMU. This patch re-instates Makefile.boot for vexpress in single platform configuration, fixing single-platform build. This change does not affect the multi-platform kernel. Signed-off-by: Jonathan Austin <jonathan.austin@arm.com> CC: Pawel Moll <pawel.moll@arm.com> --- arch/arm/mach-vexpress/Makefile.boot | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 arch/arm/mach-vexpress/Makefile.boot diff --git a/arch/arm/mach-vexpress/Makefile.boot b/arch/arm/mach-vexpress/Makefile.boot new file mode 100644 index 0000000..8caa868 --- /dev/null +++ b/arch/arm/mach-vexpress/Makefile.boot @@ -0,0 +1,4 @@ +# This is a dummy Makefile.boot for building ARCH_VEXPRESS as a standalone +# platform as opposed with ARCH_MULTIPLATFORM. It is preferable to use +# CONFIG_AUTO_ZRELADDR=y and DT but uncomment the line below if you need it. +# zreladdr-y += 0x00008000 -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-05-23 2:06 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-14 11:27 [PATCH v2 0/3] Separate generic header usage from ARCH_MULTIPLATFORM Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM Jonathan Austin 2013-05-14 15:07 ` Rob Herring 2013-05-15 23:33 ` Tony Lindgren 2013-05-21 16:25 ` Jonathan Austin 2013-05-23 2:06 ` Tony Lindgren 2013-05-21 16:36 ` Jonathan Austin 2013-05-14 11:27 ` [PATCH v2 2/3] ARM: nommu: re-enable use of vexpress " Jonathan Austin 2013-05-14 11:31 ` Pawel Moll 2013-05-14 11:27 ` [PATCH v2 3/3] ARM: vexpress-nommu: add a Makefile.boot to restore single-platform build Jonathan Austin
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.