All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: "H. Peter Anvin (Intel)" <hpa@zytor.com>
Cc: Michael Kelley <mhklinux@outlook.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	"Xin Li (Intel)" <xin@zytor.com>,
	"Borislav Petkov (AMD)" <bp@alien8.de>,
	Ingo Molnar <mingo@kernel.org>,
	Nikolay Borisov <nik.borisov@suse.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [tip: x86/core] x86/cpufeatures: Generate the <asm/cpufeaturemasks.h> header based on build config
Date: Fri, 28 Mar 2025 16:23:11 -0700	[thread overview]
Message-ID: <20250328162311.08134fa6@kernel.org> (raw)
In-Reply-To: <SN6PR02MB4157D2C2260E6BD529BCF08AD4A52@SN6PR02MB4157.namprd02.prod.outlook.com>

On Sun, 23 Mar 2025 18:06:07 +0000 Michael Kelley wrote:
> > > With this commit, changing the modified time on .config causes cpufeaturemasks.h
> > > to be rebuilt, and then all dependencies on cpufeaturemasks.h are also rebuilt. It
> > > doesn't figure out that nothing has changed in .config. A fair amount of
> > > unnecessary rebuilding is done.  
> > 
> > Hmm. Normally it is the tools that *create* the config file that
> > should notice that it hasn't changed, and not write a new one.
> > 
> > See conf_write() in scripts/kconfig/confdata.c for the particular case
> > of the regular "make *config*'
> >   
> > > I'm seeing this changed behavior specifically with the make-kpkg script on
> > > Ubuntu 20.04. It's not clear why make-kpkg is updating the modified time
> > > on .config, but prior to this commit, that update had no negative effect.  
> > 
> > It sounds like the make-kpkg script should probably be fixed to not
> > overwrite the config file unconditionally, and do that "make
> > oldconfig" and friends do, which is to notice when it hasn't changed
> > and leave it alone.
> >   
> 
> For the record, the problem with make-kpkg is that it does "make syncconfig"
> multiple times in prepping to build, sometimes passing environment
> variable ARCH=x86 and sometimes ARCH=x86_64. scripts/kconfig/conf uses
> that environment variable to decorate the header of the generated .config
> file, and to force a rebuild in include/config/auto.conf.cmd if the value changes.
> So flipping between two different values causes a "new" .config to be
> generated even though nothing of substance has changed.
> 
> I hacked the make-kpkg scripts to consistently use ARCH=x86 and that
> solves the problem. But this is a private hack as make-kpkg hasn't been
> updated in years and is no longer supported. In Ubuntu releases, it is
> deprecated after 20.04.

FWIW this also makes netdev CI melt down. Combination of allmodconfig
insisting on WERROR, us insisting on W=1, and this change insisting on
full kernel rebuild every time .config is touched :( IOW we do:

	make allmodconfig
	./scripts/config -d werror
	make -j W=1

Could a hack like this fly? I don't see an easy way out ..

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index a607769a25af..35401572d039 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -276,7 +276,9 @@ cpufeaturemasks.awk := $(srctree)/arch/x86/tools/cpufeaturemasks.awk
 cpufeatures_hdr := $(srctree)/arch/x86/include/asm/cpufeatures.h
 targets += $(cpufeaturemasks.hdr)
 quiet_cmd_gen_featuremasks = GEN     $@
-      cmd_gen_featuremasks = $(AWK) -f $(cpufeaturemasks.awk) $(cpufeatures_hdr) $(KCONFIG_CONFIG) > $@
+      cmd_gen_featuremasks = $(AWK) -f $(cpufeaturemasks.awk) $(cpufeatures_hdr) $(KCONFIG_CONFIG) > $@.new; \
+       if [ -e $@ ] && cmp -s $@ $@.new; then rm $@.new; \
+       else mv $@.new $@; fi
 
 $(cpufeaturemasks.hdr): $(cpufeaturemasks.awk) $(cpufeatures_hdr) $(KCONFIG_CONFIG) FORCE
        $(shell mkdir -p $(dir $@))

  reply	other threads:[~2025-03-28 23:23 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-05 18:47 [PATCH v7 0/4] x86/cpufeatures: Automatically generate required and disabled feature masks Xin Li (Intel)
2025-03-05 18:47 ` [PATCH v7 1/4] x86/cpufeatures: Add {required,disabled} feature configs Xin Li (Intel)
2025-03-05 18:47 ` [PATCH v7 2/4] x86/cpufeatures: Generate a feature mask header based on build config Xin Li (Intel)
2025-03-10  8:18   ` [tip: x86/cpu] x86/cpufeatures: Generate the <asm/cpufeaturemasks.h> " tip-bot2 for H. Peter Anvin (Intel)
2025-03-19 11:03   ` [tip: x86/core] " tip-bot2 for H. Peter Anvin (Intel)
2025-03-20 16:23     ` Michael Kelley
2025-03-20 16:56       ` Linus Torvalds
2025-03-23 18:06         ` Michael Kelley
2025-03-28 23:23           ` Jakub Kicinski [this message]
2025-03-29  0:14             ` Linus Torvalds
2025-03-29  0:22               ` Linus Torvalds
2025-03-29  0:56                 ` Jakub Kicinski
2025-04-01  7:00                 ` [PATCH] x86: don't re-generate cpufeaturemasks.h so eagerly Ingo Molnar
2025-03-29  0:56               ` [tip: x86/core] x86/cpufeatures: Generate the <asm/cpufeaturemasks.h> header based on build config H. Peter Anvin
2025-03-05 18:47 ` [PATCH v7 3/4] x86/cpufeatures: Remove {disabled,required}-features.h Xin Li (Intel)
2025-03-10  8:18   ` [tip: x86/cpu] " tip-bot2 for Xin Li (Intel)
2025-03-19 11:03   ` [tip: x86/core] " tip-bot2 for Xin Li (Intel)
2025-03-05 18:47 ` [PATCH v7 4/4] x86/cpufeatures: Use AWK to generate {REQUIRED|DISABLED}_MASK_BIT_SET Xin Li (Intel)
2025-03-07 18:28 ` [PATCH v7 0/4] x86/cpufeatures: Automatically generate required and disabled feature masks Xin Li
2025-03-07 19:18   ` Borislav Petkov

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=20250328162311.08134fa6@kernel.org \
    --to=kuba@kernel.org \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhklinux@outlook.com \
    --cc=mingo@kernel.org \
    --cc=nik.borisov@suse.com \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=xin@zytor.com \
    /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.