2019-11-12 16:03:21

by Anders Roxell

[permalink] [raw]
Subject: [PATCH] arm64: Kconfig: add a choice for endianess

When building allmodconfig KCONFIG_ALLCONFIG=$(pwd)/arch/arm64/configs/defconfig
CONFIG_CPU_BIG_ENDIAN gets enabled. Which tends not to be what most
people wants. Another concern that thas come up is that ACPI in't built
for an allmodconfig kernel today since that also depends on !CPU_BIG_ENDIAN.

Rework so that we introduce a 'choice' and default the choice to
CPU_LITTLE_ENDIAN. That means that when we build an allmodconfig kernel
it will default to CPU_LITTLE_ENDIAN that most people tends to want.

Signed-off-by: Anders Roxell <[email protected]>
---
arch/arm64/Kconfig | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 64764ca92fca..62f83c234a61 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -877,11 +877,24 @@ config ARM64_PA_BITS
default 48 if ARM64_PA_BITS_48
default 52 if ARM64_PA_BITS_52

+choice
+ prompt "Endianess"
+ default CPU_LITTLE_ENDIAN
+ help
+ Choose what mode you plan on running your kernel in.
+
config CPU_BIG_ENDIAN
bool "Build big-endian kernel"
help
Say Y if you plan on running a kernel in big-endian mode.

+config CPU_LITTLE_ENDIAN
+ bool "Build little-endian kernel"
+ help
+ Say Y if you plan on running a kernel in little-endian mode.
+
+endchoice
+
config SCHED_MC
bool "Multi-core scheduler support"
help
--
2.20.1


2019-11-12 16:26:02

by John Garry

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig: add a choice for endianess

On 12/11/2019 16:01, Anders Roxell wrote:
> When building allmodconfig KCONFIG_ALLCONFIG=$(pwd)/arch/arm64/configs/defconfig
> CONFIG_CPU_BIG_ENDIAN gets enabled. Which tends not to be what most
> people wants. Another concern that thas come up is that ACPI in't built

/s/wants/want/, s/thas/has/, s/in't/isn't/

> for an allmodconfig kernel today since that also depends on !CPU_BIG_ENDIAN.
>
> Rework so that we introduce a 'choice' and default the choice to
> CPU_LITTLE_ENDIAN. That means that when we build an allmodconfig kernel
> it will default to CPU_LITTLE_ENDIAN that most people tends to want.
>
> Signed-off-by: Anders Roxell <[email protected]>

FWIW, apart from spelling mistakes:

Reviewed-by: John Garry <[email protected]>

> ---
> arch/arm64/Kconfig | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 64764ca92fca..62f83c234a61 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -877,11 +877,24 @@ config ARM64_PA_BITS
> default 48 if ARM64_PA_BITS_48
> default 52 if ARM64_PA_BITS_52
>
> +choice
> + prompt "Endianess"

Should this be "Endianness"?

> + default CPU_LITTLE_ENDIAN
> + help
> + Choose what mode you plan on running your kernel in.
> +
> config CPU_BIG_ENDIAN
> bool "Build big-endian kernel"
> help
> Say Y if you plan on running a kernel in big-endian mode.
>
> +config CPU_LITTLE_ENDIAN
> + bool "Build little-endian kernel"
> + help
> + Say Y if you plan on running a kernel in little-endian mode.
> +
> +endchoice
> +
> config SCHED_MC
> bool "Multi-core scheduler support"
> help
>

2019-11-12 17:29:59

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig: add a choice for endianess

On Tue, Nov 12, 2019 at 04:24:31PM +0000, John Garry wrote:
> On 12/11/2019 16:01, Anders Roxell wrote:
> > When building allmodconfig KCONFIG_ALLCONFIG=$(pwd)/arch/arm64/configs/defconfig
> > CONFIG_CPU_BIG_ENDIAN gets enabled. Which tends not to be what most
> > people wants. Another concern that thas come up is that ACPI in't built
>
> /s/wants/want/, s/thas/has/, s/in't/isn't/
>
> > for an allmodconfig kernel today since that also depends on !CPU_BIG_ENDIAN.
> >
> > Rework so that we introduce a 'choice' and default the choice to
> > CPU_LITTLE_ENDIAN. That means that when we build an allmodconfig kernel
> > it will default to CPU_LITTLE_ENDIAN that most people tends to want.
> >
> > Signed-off-by: Anders Roxell <[email protected]>
>
> FWIW, apart from spelling mistakes:
>
> Reviewed-by: John Garry <[email protected]>
>
> > ---
> > arch/arm64/Kconfig | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> > index 64764ca92fca..62f83c234a61 100644
> > --- a/arch/arm64/Kconfig
> > +++ b/arch/arm64/Kconfig
> > @@ -877,11 +877,24 @@ config ARM64_PA_BITS
> > default 48 if ARM64_PA_BITS_48
> > default 52 if ARM64_PA_BITS_52
> > +choice
> > + prompt "Endianess"
>
> Should this be "Endianness"?
>
> > + default CPU_LITTLE_ENDIAN
> > + help
> > + Choose what mode you plan on running your kernel in.

While we're at it, I'd avoid the use of "mode" here since that has a
different meaning in the architecture, although I see we already use that
terminology for CPU_BIG_ENDIAN. How about:

"Select the endianness of data accesses performed by the CPU. Userspace
applications will need to be compiled and linked for the endianness
that is selected here.

Little-endian is compatible with x86, but big-endian is faster."

(ok, maybe drop that last sentence ;)

> > config CPU_BIG_ENDIAN
> > bool "Build big-endian kernel"
> > help
> > Say Y if you plan on running a kernel in big-endian mode.

Then this can be:

"Say Y if you plan on running a kernel with a big-endian userspace."

> > +config CPU_LITTLE_ENDIAN
> > + bool "Build little-endian kernel"
> > + help
> > + Say Y if you plan on running a kernel in little-endian mode.


"Say Y if you plan on running a kernel with a little-endian userspace.
This is usually the case for distributions targetting arm64."

I think it's userspace that people really care about, so wording it in
terms of that makes most sense to me.

Will