diff mbox

[v2,1/3] ARM: allow platforms to use generic headers without ARCH_MULTIPLATFORM

Message ID 1368530845-7415-2-git-send-email-jonathan.austin@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jonathan Austin May 14, 2013, 11:27 a.m. UTC
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(-)

Comments

Rob Herring May 14, 2013, 3:07 p.m. UTC | #1
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
>
Tony Lindgren May 15, 2013, 11:33 p.m. UTC | #2
* 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
Jonathan Austin May 21, 2013, 4:25 p.m. UTC | #3
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
>
Jonathan Austin May 21, 2013, 4:36 p.m. UTC | #4
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
>>
>
>
Tony Lindgren May 23, 2013, 2:06 a.m. UTC | #5
* 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
diff mbox

Patch

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