* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).