Re: [PATCH v1 0/3] x86/cpufeatures: Automatically generate required and disabled feature masks

From: H. Peter Anvin
Date: Mon Mar 18 2024 - 13:08:53 EST


On March 18, 2024 10:01:19 AM PDT, Xin Li <xin@xxxxxxxxx> wrote:
>On 1/31/2024 9:46 PM, Xin Li (Intel) wrote:
>> When a CPU feature is not configured, e.g., CONFIG_X86_FRED=n, in a
>> build config, its feature disable flag, e.g. DISABLE_FRED, needs to
>> be defined and added to a specific disabled CPU features mask in
>> <asm/disabled-features.h>, as the following commit:
>> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/fred&id=e554a8ca49d6d6d782f546ae4d7f036946e7dd87
>>
>> This patch set adds an awk script to automatically generate a header
>> with required and disabled CPU features masks based on build config.
>
>A gentle ping.
>
>This is an infrastructural improvement which has a lower priority,
>however it would be nice to get some feedback first.
>
>Thanks!
> Xin
>
>
>>
>>
>> H. Peter Anvin (Intel) (2):
>> x86/cpufeatures: Add {required,disabled} feature configs
>> x86/cpufeatures: Generate a feature mask header based on build config
>>
>> Xin Li (Intel) (1):
>> x86/cpufeatures: Remove {disabled,required}-features.h
>>
>> arch/x86/Kconfig | 4 +-
>> arch/x86/Kconfig.cpu | 16 +-
>> arch/x86/Kconfig.cpufeatures | 149 +++++++++++++++++
>> arch/x86/Makefile | 17 +-
>> arch/x86/boot/cpucheck.c | 3 +-
>> arch/x86/boot/cpuflags.c | 1 -
>> arch/x86/boot/mkcpustr.c | 3 +-
>> arch/x86/include/asm/Kbuild | 1 +
>> arch/x86/include/asm/asm-prototypes.h | 2 +-
>> arch/x86/include/asm/atomic64_32.h | 2 +-
>> arch/x86/include/asm/bitops.h | 4 +-
>> arch/x86/include/asm/cmpxchg_32.h | 4 +-
>> arch/x86/include/asm/cpufeature.h | 1 +
>> arch/x86/include/asm/cpufeatures.h | 8 -
>> arch/x86/include/asm/disabled-features.h | 154 ------------------
>> arch/x86/include/asm/required-features.h | 104 ------------
>> arch/x86/kernel/verify_cpu.S | 1 +
>> arch/x86/lib/Makefile | 2 +-
>> arch/x86/lib/cmpxchg8b_emu.S | 2 +-
>> arch/x86/tools/featuremasks.awk | 108 ++++++++++++
>> lib/atomic64_test.c | 2 +-
>> tools/arch/x86/include/asm/cpufeatures.h | 8 -
>> .../arch/x86/include/asm/disabled-features.h | 154 ------------------
>> .../arch/x86/include/asm/required-features.h | 104 ------------
>> tools/perf/check-headers.sh | 2 -
>> 25 files changed, 303 insertions(+), 553 deletions(-)
>> create mode 100644 arch/x86/Kconfig.cpufeatures
>> delete mode 100644 arch/x86/include/asm/disabled-features.h
>> delete mode 100644 arch/x86/include/asm/required-features.h
>> create mode 100755 arch/x86/tools/featuremasks.awk
>> delete mode 100644 tools/arch/x86/include/asm/disabled-features.h
>> delete mode 100644 tools/arch/x86/include/asm/required-features.h
>>
>>
>> base-commit: 078b7b997b47c7166c1240cf1d39db9f646a56be
>

A key pay of this is that it eliminates the need to manually assign features to cpufeature words. It was one thing when there were four of them, but with over 20 it is going to cause mistakes.