On Thu, Sep 06, 2018 at 06:01:18PM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > Commit 452331adc6c0 ("kernel-configs: enable virtio_9P and 9P_FS") > removed the explicit unsetting of CONFIG_64BIT from some of the i386 > kconfigs. So, they actually became x86_64. Fix it by syncing them back > up with the x86_64 configs. I also added the script I used to do this. The explicit "CONFIG_64BIT is not set" is actually not necessary if you specify ARCH=i386 in the make command --- and in the latest kernel, using ARCH=i386 in the command line is actually required. There was a discussion about this on LKML a few months. I use an explicit ARCH=i386 to build 32-bit kernels in my build scripts, since it's needed for the latest kernels, and if you use ARCH=i386 in the command line, "make savedefconfig" doesn't include the CONFIG_64BIT: % kbuild32 savedefconfig make[1]: Entering directory '/build/ext4-3.18' GEN ./Makefile scripts/kconfig/conf --savedefconfig=defconfig Kconfig make[1]: Leaving directory '/build/ext4-3.18' real 0m0.715s user 0m0.492s sys 0m0.251s % grep CONFIG_64BIT /build/ext4-3.18/.config # CONFIG_64BIT is not set % grep -c CONFIG_64BIT /build/ext4-3.18/defconfig 0 ... where kbuild32 does: time nice make O="$BLD_DIR_32" ARCH=i386 -j$N $* As a result, your script isn't going to actually guarantee the CONFIG_64BIT is explicitly unset in the defconfig. (In fact, I have a similar script, called "update-kernel-config" which is in the META branch, and I used it to automate the generation of the defconfigs in commit 452331adc6c0. Check out the META branch if you're curious how I do my automated build and release.) Bottom line: depending on the explicit unset of CONFIG_64BIT won't work on more modern kernels, so future build scripts will need to explicitly use ARCH=i386 in the make command. (I'll attach my kbuild and kbuild32 scripts in case you are interested.) Still, I don't mind adding the explicit unsetting of CONFIG_64BIT to the kernel configs, since they are harmless and they will work for the more modern kernels. But the kernel sync scripts will to explicitly add the CONFIG_64BIT unset line if it's not there. Cheers, - Ted
#!/bin/bash # N=$(($(getconf _NPROCESSORS_ONLN) / 2)) N=$(($(getconf _NPROCESSORS_ONLN) * 1)) mkdir -p .git/kbuild if test -f .git/kbuild/config ; then . .git/kbuild/config elif test -f .git/kbuild.conf ; then . .git/kbuild.conf mv .git/kbuild.conf .git/kbuild/config else echo "Missing kbuild configuration file!" exit 1 fi if test -z "$BLD_DIR_32" ; then echo "No BLD_DIR_32 directory" exit 1 fi if test ! -d "$BLD_DIR_32" ; then mkdir -p "$BLD_DIR_32" if test -f .git/kbuild/kernel-config ; then cp .git/kbuild/kernel-config-32 "$BLD_DIR_32/.config" fi for i in x509.genkey signing_key.pem signing_key.x509 do if test -f ".git/kbuild/$i" ; then mkdir -p "$BLD_DIR_32/certs" cp ".git/kbuild/$i" "$BLD_DIR_32/certs" fi done fi time nice make O="$BLD_DIR_32" ARCH=i386 -j$N $* cp "$BLD_DIR_32/.config" .git/kbuild/kernel-config-32 for i in x509.genkey signing_key.pem signing_key.x509 do if test -f "$BLD_DIR_32/certs/$i" ; then cp "$BLD_DIR_32/certs/$i" .git/kbuild fi done
#!/bin/bash # N=$(($(getconf _NPROCESSORS_ONLN) / 2)) N=$(($(getconf _NPROCESSORS_ONLN) * 1)) mkdir -p .git/kbuild if test -f .git/kbuild/config ; then . .git/kbuild/config elif test -f .git/kbuild.conf ; then . .git/kbuild.conf mv .git/kbuild.conf .git/kbuild/config else echo "Missing kbuild configuration file!" exit 1 fi if test ! -d "$BLD_DIR" ; then mkdir -p "$BLD_DIR" if test -f .git/kbuild/kernel-config ; then cp .git/kbuild/kernel-config "$BLD_DIR/.config" fi for i in x509.genkey signing_key.pem signing_key.x509 do if test -f ".git/kbuild/$i" ; then mkdir -p "$BLD_DIR/certs" cp ".git/kbuild/$i" "$BLD_DIR/certs" fi done fi time nice make O="$BLD_DIR" ARCH=${KERN_ARCH:-x86_64} -j$N $* cp "$BLD_DIR/.config" .git/kbuild/kernel-config for i in x509.genkey signing_key.pem signing_key.x509 do if test -f "$BLD_DIR/certs/$i" ; then cp "$BLD_DIR/certs/$i" .git/kbuild fi done