Re: [PATCH] x86/config: Make the x86 defconfigs a bit more usable

Ingo Molnar
2022-09-02T08:51:32Z

* Nathan Chancellor <nathan@kernel.org> wrote:

> On Sun, Mar 27, 2022 at 09:03:14PM +0200, Ingo Molnar wrote:
> > Yeah, good catch! ...
> >
> > I use defconfigs by explicitly adding in the architecture:
> >
> > kepler:~/tip> make ARCH=i386 defconfig
> >
> > kepler:~/tip> kconfig-arch
> > i386
> >
> > ... so never I noticed this bug.
>
> Ah, good point!
>
> > I fixed this in the latest version (attached).
> >
> > Arguably 'make ARCH=i386 savedefconfig' should preserve this, so that
> > refreshing defconfigs on bi-arch architectures is idempotent, but that's no
> > excuse to regress the existing defconfig behavior.
>
> Hmmm, I thought that it would, but I think the behavior of savedefconfig
> is actually correct with regards to how it handles CONFIG_64BIT in the
> presence of an explicit ARCH value, based on how CONFIG_64BIT is
> defined:
>
> config 64BIT
> bool "64-bit kernel" if "$(ARCH)" = "x86"
> default "$(ARCH)" != "i386"
> 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
>
> As the default is no when ARCH == i386 and there is no prompt in that
> situation, "# CONFIG_64BIT is not set" gets dropped, as that is the
> default. Using savedefconfig without the ARCH variable would do the
> right thing.
>
> I tried playing around with these Kconfig symbols to see if I could get
> something that would work for savedefconfig with or without ARCH, but I
> could not really come up with anything. I did not try super hard though,
> it might still be possible.

Unfortunately, even without the ARCH=i386 'make savedefconfig' doesn't seem
to be doing the right thing & is dropping the '# CONFIG_64BIT is not set'
line:

kepler:~/tip> make ARCH=i386 defconfig
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
kepler:~/tip> make savedefconfig
kepler:~/tip> diff -up arch/x86/configs/i386_defconfig defconfig
--- arch/x86/configs/i386_defconfig 2022-09-02 10:45:43.117430882 +0200
+++ defconfig 2022-09-02 10:46:56.663864901 +0200
@@ -282,4 +282,3 @@ CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
CONFIG_EARLY_PRINTK_DBGP=y
CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_UNWINDER_FRAME_POINTER=y
-# CONFIG_64BIT is not set
kepler:~/tip>

This is annoying in that every time I modify the i386 defconfig and use
'make savedefconfig', I have to manually revert that change ...

This reduces the usability of 'make savedefconfig' quite a bit.

Maybe Masahiro-san can tell me how I'm doing this wrong?

Thanks,

Ingo