All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/5] x86/cpufeatures: Automatically generate required and disabled feature masks
@ 2025-02-28  8:23 Xin Li (Intel)
  2025-02-28  8:23 ` [PATCH v6 1/5] x86/cpufeatures: Rename X86_CMPXCHG64 to X86_CX8 Xin Li (Intel)
                   ` (5 more replies)
  0 siblings, 6 replies; 28+ messages in thread
From: Xin Li (Intel) @ 2025-02-28  8:23 UTC (permalink / raw)
  To: linux-kernel, linux-perf-users
  Cc: tglx, mingo, bp, dave.hansen, x86, hpa, will, peterz, yury.norov,
	akpm, acme, namhyung, brgerst, andrew.cooper3, nik.borisov

The x86 build process first generates required and disabled feature
masks based on current build config, and then uses these generated
masks to compile the source code.  When a CPU feature is not enabled
in a build config, e.g., when CONFIG_X86_FRED=n, its feature disable
flag, i.e., DISABLE_FRED, needs to be properly defined and added to
a specific disabled CPU features mask in <asm/disabled-features.h>,
as the following patch does:
https://lore.kernel.org/all/20231205105030.8698-8-xin3.li@intel.com/.
As a result, the FRED feature bit is surely cleared in the generated
kernel binary when CONFIG_X86_FRED=n.

Recently there is another case to repeat the same exercise for the
AMD SEV-SNP CPU feature:
https://lore.kernel.org/all/20240126041126.1927228-2-michael.roth@amd.com/.
https://lore.kernel.org/all/20240126041126.1927228-23-michael.roth@amd.com/.

It was one thing when there were four of CPU feature masks, but with
over 20 it is going to cause mistakes, e.g.,
https://lore.kernel.org/lkml/aaed79d5-d683-d1bc-7ba1-b33c8d6db618@suse.com/.

We want to eliminate the stupidly repeated exercise to manually assign
features to CPU feature words through introducing an AWK script to
automatically generate a header with required and disabled CPU feature
masks based on current build config, and this patch set does that.

Link to v5:
https://lore.kernel.org/lkml/20250106070727.3211006-1-xin@zytor.com/


H. Peter Anvin (Intel) (3):
  x86/cpufeatures: Rename X86_CMPXCHG64 to X86_CX8
  x86/cpufeatures: Add {required,disabled} feature configs
  x86/cpufeatures: Generate a feature mask header based on build config

Xin Li (Intel) (2):
  x86/cpufeatures: Remove {disabled,required}-features.h
  x86/cpufeatures: Use AWK to generate {REQUIRED|DISABLED}_MASK_BIT_SET

 arch/x86/Kconfig                              |   4 +-
 arch/x86/Kconfig.cpu                          |   4 +-
 arch/x86/Kconfig.cpufeatures                  | 197 ++++++++++++++++++
 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/cmpxchg_32.h             |   2 +-
 arch/x86/include/asm/cpufeature.h             |  70 +------
 arch/x86/include/asm/cpufeatures.h            |   8 -
 arch/x86/include/asm/disabled-features.h      | 161 --------------
 arch/x86/include/asm/required-features.h      | 105 ----------
 arch/x86/kernel/verify_cpu.S                  |   4 +
 arch/x86/lib/Makefile                         |   2 +-
 arch/x86/lib/cmpxchg8b_emu.S                  |   2 +-
 arch/x86/tools/featuremasks.awk               |  88 ++++++++
 lib/atomic64_test.c                           |   2 +-
 tools/arch/x86/include/asm/cpufeatures.h      |   8 -
 .../arch/x86/include/asm/disabled-features.h  | 161 --------------
 .../arch/x86/include/asm/required-features.h  | 105 ----------
 tools/perf/check-headers.sh                   |   2 -
 24 files changed, 320 insertions(+), 634 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: 0b8c04b9207d5ee92ab3b341f0211aaf2c0b6976
-- 
2.48.1


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2025-03-22 19:59 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-28  8:23 [PATCH v6 0/5] x86/cpufeatures: Automatically generate required and disabled feature masks Xin Li (Intel)
2025-02-28  8:23 ` [PATCH v6 1/5] x86/cpufeatures: Rename X86_CMPXCHG64 to X86_CX8 Xin Li (Intel)
2025-02-28 16:53   ` [tip: x86/cpu] " tip-bot2 for H. Peter Anvin (Intel)
2025-02-28  8:23 ` [PATCH v6 2/5] x86/cpufeatures: Add {required,disabled} feature configs Xin Li (Intel)
2025-02-28 16:53   ` [tip: x86/cpu] " tip-bot2 for H. Peter Anvin (Intel)
2025-03-10  8:18   ` [tip: x86/cpu] x86/cpufeatures: Add {REQUIRED,DISABLED} " tip-bot2 for H. Peter Anvin (Intel)
2025-03-10 14:43     ` H. Peter Anvin
2025-03-10 15:06       ` Borislav Petkov
2025-03-10 18:57       ` Ingo Molnar
2025-03-19 11:04   ` [tip: x86/core] " tip-bot2 for H. Peter Anvin (Intel)
2025-02-28  8:23 ` [PATCH v6 3/5] x86/cpufeatures: Generate a feature mask header based on build config Xin Li (Intel)
2025-02-28 16:53   ` [tip: x86/cpu] " tip-bot2 for H. Peter Anvin (Intel)
2025-03-03 11:38   ` [PATCH v6 3/5] " Aithal, Srikanth
2025-03-03 12:05     ` H. Peter Anvin
2025-03-03 13:25       ` Borislav Petkov
2025-03-03 22:34         ` H. Peter Anvin
2025-03-04 10:18         ` Xin Li
2025-03-04 10:29           ` Borislav Petkov
2025-03-05  7:30             ` Xin Li
2025-03-05 22:04               ` Borislav Petkov
2025-03-22 19:58                 ` Xin Li
2025-02-28  8:23 ` [PATCH v6 4/5] x86/cpufeatures: Remove {disabled,required}-features.h Xin Li (Intel)
2025-02-28 16:53   ` [tip: x86/cpu] " tip-bot2 for Xin Li (Intel)
2025-02-28  8:23 ` [PATCH v6 5/5] x86/cpufeatures: Use AWK to generate {REQUIRED|DISABLED}_MASK_BIT_SET Xin Li (Intel)
2025-02-28 16:53   ` [tip: x86/cpu] " tip-bot2 for Xin Li (Intel)
2025-03-10  8:18   ` [tip: x86/cpu] x86/cpufeatures: Use AWK to generate {REQUIRED|DISABLED}_MASK_BIT_SET in <asm/cpufeaturemasks.h> tip-bot2 for Xin Li (Intel)
2025-03-19 11:03   ` [tip: x86/core] " tip-bot2 for Xin Li (Intel)
2025-02-28  9:26 ` [PATCH v6 0/5] x86/cpufeatures: Automatically generate required and disabled feature masks Ingo Molnar

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.