All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Theodore Y. Ts'o" <tytso@mit.edu>
To: Eric Biggers <ebiggers@kernel.org>
Cc: fstests@vger.kernel.org
Subject: Re: [xfstests-bld PATCH] kernel-configs: fix i386 configs
Date: Wed, 3 Oct 2018 23:18:23 -0400	[thread overview]
Message-ID: <20181004031823.GB646@thunk.org> (raw)
In-Reply-To: <20180907010118.234124-1-ebiggers@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 2232 bytes --]

On Thu, Sep 06, 2018 at 06:01:18PM -0700, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
> 
> 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

[-- Attachment #2: kbuild32 --]
[-- Type: text/plain, Size: 1057 bytes --]

#!/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

[-- Attachment #3: kbuild --]
[-- Type: text/plain, Size: 961 bytes --]

#!/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


      parent reply	other threads:[~2018-10-04 10:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-07  1:01 [xfstests-bld PATCH] kernel-configs: fix i386 configs Eric Biggers
2018-10-03 23:38 ` Eric Biggers
2018-10-04  3:18 ` Theodore Y. Ts'o [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181004031823.GB646@thunk.org \
    --to=tytso@mit.edu \
    --cc=ebiggers@kernel.org \
    --cc=fstests@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.