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

Masahiro Yamada
2022-09-02T09:19:30Z

On Fri, Sep 2, 2022 at 5:50 PM Ingo Molnar <mingo@kernel.org> wrote:
>
>
> * 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:

Oh, really?

Without ARCH=i386, it works correctly for me.

masahiro@zoe:~/ref/linux$ make i386_defconfig savedefconfig
#
# No change to .config
#
masahiro@zoe:~/ref/linux$ grep CONFIG_64BIT defconfig
# CONFIG_64BIT is not set

I guess you gave ARCH=i386 somewhere.

> 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

--
Best Regards
Masahiro Yamada