x86/Kconfig: Fix allnoconfig without explicitly specified ARCH
Borislav Petkov
maintainerPATCH 1/1 x86/Kconfig: Fix allnoconfig without explicitly specified ARCH
From: Borislav Petkov <[email protected]>
Doing
$ make allnoconfig
I get a 32-bit allnoconfig:
$ grep -i x86 .config # Linux/x86 4.0.0-rc6 Kernel Configuration CONFIG_X86_32=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
The same if I do:
$ make ARCH=i386 allnoconfig $ grep -i x86 .config | head -20 CONFIG_X86_32=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
Make allnoconfig without ARCH specified on the command line default to 64-bit.
--- arch/x86/Kconfig | 1 + 1 file changed, 1 insertion(+)
arch/x86/Kconfig +1 -0
@@ -2,6 +2,7 @@ config 64BIT bool "64-bit kernel" if ARCH = "x86" default ARCH != "i386" + option allnoconfig_y ---help--- Say yes to build a 64-bit kernel - formerly known as x86_64 Say no to build a 32-bit kernel - formerly known as i386
Signature · 1 line
2.3.3
Borislav Petkov schreef op vr 03-04-2015 om 13:00 [+0200]:
Quoted 35 lines
From: Borislav Petkov <[email protected]>
Doing
$ make allnoconfigI get a 32-bit allnoconfig:
$ grep -i x86 .config # Linux/x86 4.0.0-rc6 Kernel Configuration CONFIG_X86_32=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"The same if I do:
$ make ARCH=i386 allnoconfig $ grep -i x86 .config | head -20 CONFIG_X86_32=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"Make allnoconfig without ARCH specified on the command line default to 64-bit.
Signed-off-by Borislav Petkov <[email protected]>--- arch/x86/Kconfig | 1 + 1 file changed, 1 insertion(+)arch/x86/Kconfig +0
-0
arch/x86/Kconfig line 8
Quoted 7 lines
arch/x86/Kconfig +1
-0@@ -2,6 +2,7 @@ config 64BIT bool "64-bit kernel" if ARCH = "x86" default ARCH != "i386" + option allnoconfig_y ---help--- Say yes to build a 64-bit kernel - formerly known as x86_64 Say no to build a 32-bit kernel - formerly known as i386
A side effect of this patch is that allnoconfig when building on 32 bits now also requires to set ARCH=i386, which is surprising. This seems to help with that:
Makefile +1 -1
@@ -221,7 +221,7 @@ export srctree objtree VPATH # then ARCH is assigned, getting whatever value it gets normally, and # SUBARCH is subsequently ignored. -SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \ +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/x86_64/x86/ \ -e s/sun4u/sparc64/ \ -e s/arm.*/arm/ -e s/sa110/arm/ \ -e s/s390x/s390/ -e s/parisc64/parisc/ \
And that will also set 64BIT to 'n' when doing an allyesconfig on 32 bits. So it removes another surprising configuration one can currently generate.
(I think that has no further side effects. But I need to double check.)
Would some solution that pins 64BIT to 'y' for x86_64 and to 'n' for i386 - even for allnoconfig and allyesconfig - do what you want?
Paul Bolle
Borislav Petkov
maintainerQuoted 2 lines · Paul Bolle
A side effect of this patch is that allnoconfig when building on 32 bits now also requires to set ARCH=i386, which is surprising. This seems to
How else would you build a 32-bit allnoconfig?
Signature · 5 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--Borislav Petkov schreef op vr 03-04-2015 om 16:59 [+0200]:
Quoted 5 lines · Paul Bolle
Quoted 2 lines
A side effect of this patch is that allnoconfig when building on 32 bits now also requires to set ARCH=i386, which is surprising. This seems to
How else would you build a 32-bit allnoconfig?
Well, "when building on 32 bits" it currently suffices to do:
make allnoconfig
and the patch changes that.
Just like it is surprising to get a CONFIG_X86_32=y .config when doing allnoconfig on x86_64 it is also surprising to get a CONFIG_X86_64=y .config when doing allyesconfig on i386. So I think a more general solution to these surprising .configs should be considered.
Thanks,
Paul Bolle
Borislav Petkov
maintainerQuoted 4 lines · Paul Bolle
Well, "when building on 32 bits" it currently suffices to do:
make allnoconfigand the patch changes that.
Hmm, so this would need more staring. The fact that 64-bit needs to set CONFIG_64BIT, we would need a way to say:
option allnoconfig_y if ARCH = "x86"
And Kconfig doesn't support that yet...
:-\
Signature · 5 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--Quoted 4 lines · Borislav Petkov
Quoted 3 lines · Paul Bolle
Well, "when building on 32 bits" it currently suffices to do:
make allnoconfig
Quoted 8 lines
Quoted 1 line
and the patch changes that.
Hmm, so this would need more staring. The fact that 64-bit needs to set
CONFIG_64BIT, we would need a way to say:option
allnoconfig_yif ARCH = "x86"And
Kconfigdoesn't support that yet...
The fact that "make allnoconfig" and "make allyesconfig" can give you a .config for another subarchitecture is annoying. I think it would be nice if we teach those make targets (through tweaks in Kconfig files and/or Makefiles) to avoid doing that.
Not sure, yet, how a clean way to do that might look like, sorry.
Paul Bolle
Quoted 10 lines · Paul Bolle
Quoted 9 lines · Borislav Petkov
Quoted 4 lines · Paul Bolle
Well, "when building on 32 bits" it currently suffices to do:
make allnoconfigand the patch changes that.
Hmm, so this would need more staring. The fact that 64-bit needs to set
CONFIG_64BIT, we would need a way to say:
Quoted 6 lines
Quoted 3 lines
option
allnoconfig_yif ARCH = "x86"And
Kconfigdoesn't support that yet...The fact that "make allnoconfig" and "make allyesconfig" can give you a .config for another subarchitecture is annoying. [...]
Absolutely! No 'make *config' option should change the current .config's architecture, except if ARCH= is specified on the command line.
Thanks,
Ingo