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

Xin Li (Intel) posted 3 patches 1 year, 10 months ago
There is a newer version of this series
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
[PATCH v1 0/3] x86/cpufeatures: Automatically generate required and disabled feature masks
Posted by Xin Li (Intel) 1 year, 10 months ago
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
Re: [PATCH v1 0/3] x86/cpufeatures: Automatically generate required and disabled feature masks
Posted by Xin Li 1 year, 9 months ago
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
Re: [PATCH v1 0/3] x86/cpufeatures: Automatically generate required and disabled feature masks
Posted by H. Peter Anvin 1 year, 9 months ago
On March 18, 2024 10:01:19 AM PDT, Xin Li <xin@zytor.com> 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.