2024-02-01 05:55:09

by Xin Li (Intel)

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

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.


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
--
2.43.0



2024-03-18 17:02:08

by Xin Li (Intel)

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

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

--
Thanks!
Xin


2024-03-18 17:20:58

by H. Peter Anvin

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

On March 18, 2024 10:01:19 AM PDT, Xin Li <[email protected]> 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.