Separate generic header usage from ARCH_MULTIPLATFORM
Subsystems (6)
v2 cover Separate generic header usage from ARCH_MULTIPLATFORM
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
Signature · 1 line
1.7.9.5
PATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
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.
--- 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(-)
arch/arm/Kconfig +4 -0
@@ -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"
arch/arm/Kconfig.debug +2 -2
@@ -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
arch/arm/Makefile +1 -1
@@ -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
arch/arm/include/asm/timex.h +1 -1
@@ -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>
arch/arm/mach-mvebu/Makefile +1 -1
@@ -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
arch/arm/mach-omap2/Makefile +1 -1
@@ -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
arch/arm/mach-vexpress/Makefile +1 -1
@@ -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
arch/arm/plat-omap/Makefile +1 -1
@@ -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
arch/arm/plat-orion/Makefile +1 -1
@@ -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
arch/arm/plat-versatile/Makefile +1 -1
@@ -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
Signature · 1 line
1.7.9.5
PATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
Quoted 5 lines · Jonathan Austin
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.
Quoted 8 lines
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_HEADERSconfig option thatARCH_MULTIPLATFORMselects. Other platforms can now selectARM_GENERIC_HEADERSindependently.
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
Quoted 163 lines
Signed-off-by Jonathan Austin <[email protected]>CC Rob Herring <[email protected]>CC Pawel Moll <[email protected]>CC Jason Cooper <[email protected]>CC Andrew Lunn <[email protected]>CC Gregory Clement <[email protected]>CC Tony Lindgren <[email protected]>CC Stephen Boyd <[email protected]>CC Will Deacon <[email protected]>--- 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(-)arch/arm/Kconfig +4
-0@@ -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"arch/arm/Kconfig.debug +2
-2@@ -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_PRINTKarch/arm/Makefile +1
-1@@ -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)) elsearch/arm/include/asm/timex.h +1
-1@@ -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> arch/arm/mach-mvebu/Makefile +1
-1@@ -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-aarch/arm/mach-omap2/Makefile +1
-1@@ -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 supportarch/arm/mach-vexpress/Makefile +1
-1@@ -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.oarch/arm/plat-omap/Makefile +1
-1@@ -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.oarch/arm/plat-orion/Makefile +1
-1@@ -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.oarch/arm/plat-versatile/Makefile +1
-1@@ -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
Tony Lindgren
maintainerPATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
Quoted 11 lines · Rob Herring
Quoted 10 lines · Jonathan Austin
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").
Quoted 8 lines
Quoted 3 lines
This patch untangles these two options by introducing a new
ARM_GENERIC_HEADERSconfig option thatARCH_MULTIPLATFORMselects. Other platforms can now selectARM_GENERIC_HEADERSindependently.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_HEADERSto 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)) elseKBUILD_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
PATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
Hi Tony,
Quoted 35 lines · Tony Lindgren
Quoted 11 lines · Rob Herring
Quoted 10 lines · Jonathan Austin
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").Quoted 8 lines
Quoted 3 lines
This patch untangles these two options by introducing a new
ARM_GENERIC_HEADERSconfig option thatARCH_MULTIPLATFORMselects. Other platforms can now selectARM_GENERIC_HEADERSindependently.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_HEADERSto 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/Makefilehas:ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
ifeq ($(KBUILD_SRC),)KBUILD_CPPFLAGS+= $(patsubst %,-I%include,$(machdirs) $(platdirs)) elseKBUILD_CPPFLAGS+= $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) endif
endif
Quoted 3 lines
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
Quoted 4 lines
Regards,
Tony
Tony Lindgren
maintainerPATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
Quoted 52 lines · Jonathan Austin
Hi Tony,
Quoted 35 lines · Tony Lindgren
Quoted 11 lines · Rob Herring
Quoted 10 lines · Jonathan Austin
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").Quoted 8 lines
Quoted 3 lines
This patch untangles these two options by introducing a new
ARM_GENERIC_HEADERSconfig option thatARCH_MULTIPLATFORMselects. Other platforms can now selectARM_GENERIC_HEADERSindependently.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_HEADERSto 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/Makefilehas:ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
ifeq ($(KBUILD_SRC),)KBUILD_CPPFLAGS+= $(patsubst %,-I%include,$(machdirs) $(platdirs)) elseKBUILD_CPPFLAGS+= $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs)) endif
endifQuoted 3 lines
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_MULTIPLATFORMin your example above withCONFIG_ARM_GENERIC_HEADERS(soon to be renamed, as per Rob's suggestion).Because
ARCH_MULTIPLATFORMselects 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.
Quoted 6 lines
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_NOMMUcase.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
PATCH v2 1/3 ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM
In reply to Rob HerringHi Rob,
Quoted 11 lines · Rob Herring
Quoted 10 lines · Jonathan Austin
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").
Quoted 8 lines
Quoted 3 lines
This patch untangles these two options by introducing a new
ARM_GENERIC_HEADERSconfig option thatARCH_MULTIPLATFORMselects. Other platforms can now selectARM_GENERIC_HEADERSindependently.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_HEADERSto 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
Quoted 168 lines
Rob
Quoted 163 lines
Signed-off-by Jonathan Austin <[email protected]>CC Rob Herring <[email protected]>CC Pawel Moll <[email protected]>CC Jason Cooper <[email protected]>CC Andrew Lunn <[email protected]>CC Gregory Clement <[email protected]>CC Tony Lindgren <[email protected]>CC Stephen Boyd <[email protected]>CC Will Deacon <[email protected]>--- 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(-)arch/arm/Kconfig +4
-0@@ -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"arch/arm/Kconfig.debug +2
-2@@ -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_PRINTKarch/arm/Makefile +1
-1@@ -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)) elsearch/arm/include/asm/timex.h +1
-1@@ -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> arch/arm/mach-mvebu/Makefile +1
-1@@ -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-aarch/arm/mach-omap2/Makefile +1
-1@@ -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 supportarch/arm/mach-vexpress/Makefile +1
-1@@ -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.oarch/arm/plat-omap/Makefile +1
-1@@ -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.oarch/arm/plat-orion/Makefile +1
-1@@ -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.oarch/arm/plat-versatile/Makefile +1
-1@@ -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
PATCH v2 2/3 ARM: nommu: re-enable use of vexpress without ARCH_MULTIPLATFORM
In reply to Jonathan AustinSince 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.
--- arch/arm/Kconfig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
arch/arm/Kconfig +17 -0
@@ -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
Signature · 1 line
1.7.9.5
PATCH v2 2/3 ARM: nommu: re-enable use of vexpress without ARCH_MULTIPLATFORM
Quoted 8 lines · Jonathan Austin
Since
617276307cd4c("ARM: vexpress: convert to multi-platform") it has been impossible to selectARCH_VEXPRESSwithoutARCH_MULTIPLATFORM.
ARCH_MULTIPLATFORMdoesn'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.
Quoted 8 lines
This patch creates a shim
ARCH_VEXPRESS_NOMMUconfig option in the 'choice' for "ARM system type" to make this possible again.Signed-off-by Jonathan Austin <[email protected]>Signed-off-by Will Deacon <[email protected]>Acked-by Nicolas Pitre <[email protected]>Acked-by Arnd Bergmann <[email protected]>CC Pawel Moll <[email protected]>
Thanks!
Pawel
PATCH v2 3/3 ARM: vexpress-nommu: add a Makefile.boot to restore single-platform build
In reply to Jonathan AustinWhen 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.
--- arch/arm/mach-vexpress/Makefile.boot | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 arch/arm/mach-vexpress/Makefile.boot
arch/arm/mach-vexpress/Makefile.boot new file +4 -0
@@ -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
Signature · 1 line
1.7.9.5