arch/x86/Kconfig | 4 +- arch/x86/Kconfig.cpu | 12 +- 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/bitops.h | 4 +- arch/x86/include/asm/cmpxchg_32.h | 2 +- arch/x86/include/asm/cpufeature.h | 71 +------ arch/x86/include/asm/cpufeatures.h | 13 +- arch/x86/include/asm/disabled-features.h | 161 -------------- arch/x86/include/asm/required-features.h | 105 ---------- arch/x86/kernel/cpu/common.c | 1 + 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 - 26 files changed, 327 insertions(+), 646 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
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.
Recently when working on the immediate form of MSR access instructions,
I needed to add a new CPU feature word for CPUID.7.1.ECX, and I had to
replace the same check "(NCAPINTS != 22)" with (NCAPINTS != 23) in 3
different files as
https://github.com/xinli-intel/linux-fred-public/commit/aa80536927fcd293be8ae54e1d5e4d886cf83f21
Obviously these replacements could be saved if the patch to add a new
CPU feature word is reworked on top of this patch set.
So this seems a good opportunity to demonstrate the convenience out of
this patch set, and here comes v5 with just one more patch on top of v4
that adds a new CPU feature word for CPUID.7.1.ECX and uses it for the
immediate form of MSR access feature.
Link to v4:
https://lore.kernel.org/lkml/20240628174544.3118826-1-xin@zytor.com/
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) (3):
x86/cpufeatures: Remove {disabled,required}-features.h
x86/cpufeatures: Use AWK to generate {REQUIRED|DISABLED}_MASK_BIT_SET
x86/cpufeatures: Add the CPU feature bit for MSR immediate form
instructions
arch/x86/Kconfig | 4 +-
arch/x86/Kconfig.cpu | 12 +-
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/bitops.h | 4 +-
arch/x86/include/asm/cmpxchg_32.h | 2 +-
arch/x86/include/asm/cpufeature.h | 71 +------
arch/x86/include/asm/cpufeatures.h | 13 +-
arch/x86/include/asm/disabled-features.h | 161 --------------
arch/x86/include/asm/required-features.h | 105 ----------
arch/x86/kernel/cpu/common.c | 1 +
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 -
26 files changed, 327 insertions(+), 646 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: af2c8596bd2e455ae350ba1585bc938ee85aa38d
--
2.47.1
On 1/5/2025 11:07 PM, Xin Li (Intel) wrote:
> 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.
>
> Recently when working on the immediate form of MSR access instructions,
> I needed to add a new CPU feature word for CPUID.7.1.ECX, and I had to
> replace the same check "(NCAPINTS != 22)" with (NCAPINTS != 23) in 3
> different files as
> https://github.com/xinli-intel/linux-fred-public/commit/aa80536927fcd293be8ae54e1d5e4d886cf83f21
> Obviously these replacements could be saved if the patch to add a new
> CPU feature word is reworked on top of this patch set.
>
> So this seems a good opportunity to demonstrate the convenience out of
> this patch set, and here comes v5 with just one more patch on top of v4
> that adds a new CPU feature word for CPUID.7.1.ECX and uses it for the
> immediate form of MSR access feature.
>
> Link to v4:
> https://lore.kernel.org/lkml/20240628174544.3118826-1-xin@zytor.com/
The patch proposed in the following review reminds me this infra
improvement patch set again, so a gentle ping :)
https://lore.kernel.org/lkml/CA+i-1C3LDJTf26WdBo7MvCdTs-dybqsUp3Ze7NowcOUHPWMXrg@mail.gmail.com/
Thanks!
Xin
On Sun, Jan 05, 2025 at 11:07:22PM -0800, Xin Li (Intel) wrote:
> arch/x86/Kconfig | 4 +-
> arch/x86/Kconfig.cpu | 12 +-
> 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/bitops.h | 4 +-
> arch/x86/include/asm/cmpxchg_32.h | 2 +-
> arch/x86/include/asm/cpufeature.h | 71 +------
> arch/x86/include/asm/cpufeatures.h | 13 +-
> arch/x86/include/asm/disabled-features.h | 161 --------------
> arch/x86/include/asm/required-features.h | 105 ----------
> arch/x86/kernel/cpu/common.c | 1 +
> 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 -
> 26 files changed, 327 insertions(+), 646 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
make --no-print-directory -C /home/kernel/linux \
-f /home/kernel/linux/Makefile
# GEN arch/x86/include/generated/asm/orc_hash.h
mkdir -p arch/x86/include/generated/asm/; sh ./scripts/orc_hash.sh < arch/x86/include/asm/orc_types.h > arch/x86/include/generated/asm/orc_hash.h
make -f ./scripts/Makefile.build obj=scripts/basic
set -e; mkdir -p include/config/; trap "rm -f include/config/.tmp_kernel.release" EXIT; { ./scripts/setlocalversion .; } > include/config/.tmp_kernel.release; if [ ! -r include/config/kernel.release ] || ! cmp -s include/config/kernel.release include/config/.tmp_kernel.release; then : ' UPD include/config/kernel.release'; mv -f include/config/.tmp_kernel.release include/config/kernel.release; fi
# GEN arch/x86/include/generated/asm/featuremasks.h
awk -f ./arch/x86/tools/featuremasks.awk ./arch/x86/include/asm/cpufeatures.h .config > arch/x86/include/generated/asm/featuremasks.h
make -f ./scripts/Makefile.asm-headers obj=arch/x86/include/generated/uapi/asm \
generic=include/uapi/asm-generic
awk: ./arch/x86/tools/featuremasks.awk: line 16: syntax error at or near {
awk: ./arch/x86/tools/featuremasks.awk: line 20: syntax error at or near :
awk: ./arch/x86/tools/featuremasks.awk: line 24: syntax error at or near }
make[1]: *** [arch/x86/Makefile:285: arch/x86/include/generated/asm/featuremasks.h] Error 2
make[1]: *** Deleting file 'arch/x86/include/generated/asm/featuremasks.h'
make[1]: *** Waiting for unfinished jobs....
# WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
echo "#include <asm-generic/bpf_perf_event.h>" > arch/x86/include/generated/uapi/asm/bpf_perf_event.h
# WRAP arch/x86/include/generated/uapi/asm/fcntl.h
echo "#include <asm-generic/fcntl.h>" > arch/x86/include/generated/uapi/asm/fcntl.h
# WRAP arch/x86/include/generated/uapi/asm/errno.h
echo "#include <asm-generic/errno.h>" > arch/x86/include/generated/uapi/asm/errno.h
# WRAP arch/x86/include/generated/uapi/asm/ioctl.h
echo "#include <asm-generic/ioctl.h>" > arch/x86/include/generated/uapi/asm/ioctl.h
# WRAP arch/x86/include/generated/uapi/asm/ioctls.h
echo "#include <asm-generic/ioctls.h>" > arch/x86/include/generated/uapi/asm/ioctls.h
# WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
echo "#include <asm-generic/ipcbuf.h>" > arch/x86/include/generated/uapi/asm/ipcbuf.h
# WRAP arch/x86/include/generated/uapi/asm/param.h
echo "#include <asm-generic/param.h>" > arch/x86/include/generated/uapi/asm/param.h
# WRAP arch/x86/include/generated/uapi/asm/poll.h
echo "#include <asm-generic/poll.h>" > arch/x86/include/generated/uapi/asm/poll.h
# WRAP arch/x86/include/generated/uapi/asm/resource.h
echo "#include <asm-generic/resource.h>" > arch/x86/include/generated/uapi/asm/resource.h
# WRAP arch/x86/include/generated/uapi/asm/socket.h
echo "#include <asm-generic/socket.h>" > arch/x86/include/generated/uapi/asm/socket.h
# WRAP arch/x86/include/generated/uapi/asm/sockios.h
echo "#include <asm-generic/sockios.h>" > arch/x86/include/generated/uapi/asm/sockios.h
# WRAP arch/x86/include/generated/uapi/asm/termbits.h
echo "#include <asm-generic/termbits.h>" > arch/x86/include/generated/uapi/asm/termbits.h
# WRAP arch/x86/include/generated/uapi/asm/termios.h
echo "#include <asm-generic/termios.h>" > arch/x86/include/generated/uapi/asm/termios.h
# WRAP arch/x86/include/generated/uapi/asm/types.h
echo "#include <asm-generic/types.h>" > arch/x86/include/generated/uapi/asm/types.h
make: *** [Makefile:251: __sub-make] Error 2
Probably due to:
$ awk --version
mawk 1.3.4 20250131
Copyright 2008-2024,2025, Thomas E. Dickey
Copyright 1991-1996,2014, Michael D. Brennan
random-funcs: srandom/random
regex-funcs: internal
compiled limits:
sprintf buffer 8192
maximum-integer 9223372036854775808
while the other box has GNU awk where it obviously works.
HTH.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
On 2/23/2025 2:27 AM, Borislav Petkov wrote:
> On Sun, Jan 05, 2025 at 11:07:22PM -0800, Xin Li (Intel) wrote:
>> arch/x86/Kconfig | 4 +-
>> arch/x86/Kconfig.cpu | 12 +-
>> 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/bitops.h | 4 +-
>> arch/x86/include/asm/cmpxchg_32.h | 2 +-
>> arch/x86/include/asm/cpufeature.h | 71 +------
>> arch/x86/include/asm/cpufeatures.h | 13 +-
>> arch/x86/include/asm/disabled-features.h | 161 --------------
>> arch/x86/include/asm/required-features.h | 105 ----------
>> arch/x86/kernel/cpu/common.c | 1 +
>> 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 -
>> 26 files changed, 327 insertions(+), 646 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
>
> make --no-print-directory -C /home/kernel/linux \
> -f /home/kernel/linux/Makefile
> # GEN arch/x86/include/generated/asm/orc_hash.h
> mkdir -p arch/x86/include/generated/asm/; sh ./scripts/orc_hash.sh < arch/x86/include/asm/orc_types.h > arch/x86/include/generated/asm/orc_hash.h
> make -f ./scripts/Makefile.build obj=scripts/basic
> set -e; mkdir -p include/config/; trap "rm -f include/config/.tmp_kernel.release" EXIT; { ./scripts/setlocalversion .; } > include/config/.tmp_kernel.release; if [ ! -r include/config/kernel.release ] || ! cmp -s include/config/kernel.release include/config/.tmp_kernel.release; then : ' UPD include/config/kernel.release'; mv -f include/config/.tmp_kernel.release include/config/kernel.release; fi
> # GEN arch/x86/include/generated/asm/featuremasks.h
> awk -f ./arch/x86/tools/featuremasks.awk ./arch/x86/include/asm/cpufeatures.h .config > arch/x86/include/generated/asm/featuremasks.h
> make -f ./scripts/Makefile.asm-headers obj=arch/x86/include/generated/uapi/asm \
> generic=include/uapi/asm-generic
> awk: ./arch/x86/tools/featuremasks.awk: line 16: syntax error at or near {
> awk: ./arch/x86/tools/featuremasks.awk: line 20: syntax error at or near :
> awk: ./arch/x86/tools/featuremasks.awk: line 24: syntax error at or near }
> make[1]: *** [arch/x86/Makefile:285: arch/x86/include/generated/asm/featuremasks.h] Error 2
> make[1]: *** Deleting file 'arch/x86/include/generated/asm/featuremasks.h'
> make[1]: *** Waiting for unfinished jobs....
> # WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
> echo "#include <asm-generic/bpf_perf_event.h>" > arch/x86/include/generated/uapi/asm/bpf_perf_event.h
> # WRAP arch/x86/include/generated/uapi/asm/fcntl.h
> echo "#include <asm-generic/fcntl.h>" > arch/x86/include/generated/uapi/asm/fcntl.h
> # WRAP arch/x86/include/generated/uapi/asm/errno.h
> echo "#include <asm-generic/errno.h>" > arch/x86/include/generated/uapi/asm/errno.h
> # WRAP arch/x86/include/generated/uapi/asm/ioctl.h
> echo "#include <asm-generic/ioctl.h>" > arch/x86/include/generated/uapi/asm/ioctl.h
> # WRAP arch/x86/include/generated/uapi/asm/ioctls.h
> echo "#include <asm-generic/ioctls.h>" > arch/x86/include/generated/uapi/asm/ioctls.h
> # WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
> echo "#include <asm-generic/ipcbuf.h>" > arch/x86/include/generated/uapi/asm/ipcbuf.h
> # WRAP arch/x86/include/generated/uapi/asm/param.h
> echo "#include <asm-generic/param.h>" > arch/x86/include/generated/uapi/asm/param.h
> # WRAP arch/x86/include/generated/uapi/asm/poll.h
> echo "#include <asm-generic/poll.h>" > arch/x86/include/generated/uapi/asm/poll.h
> # WRAP arch/x86/include/generated/uapi/asm/resource.h
> echo "#include <asm-generic/resource.h>" > arch/x86/include/generated/uapi/asm/resource.h
> # WRAP arch/x86/include/generated/uapi/asm/socket.h
> echo "#include <asm-generic/socket.h>" > arch/x86/include/generated/uapi/asm/socket.h
> # WRAP arch/x86/include/generated/uapi/asm/sockios.h
> echo "#include <asm-generic/sockios.h>" > arch/x86/include/generated/uapi/asm/sockios.h
> # WRAP arch/x86/include/generated/uapi/asm/termbits.h
> echo "#include <asm-generic/termbits.h>" > arch/x86/include/generated/uapi/asm/termbits.h
> # WRAP arch/x86/include/generated/uapi/asm/termios.h
> echo "#include <asm-generic/termios.h>" > arch/x86/include/generated/uapi/asm/termios.h
> # WRAP arch/x86/include/generated/uapi/asm/types.h
> echo "#include <asm-generic/types.h>" > arch/x86/include/generated/uapi/asm/types.h
> make: *** [Makefile:251: __sub-make] Error 2
>
> Probably due to:
>
> $ awk --version
> mawk 1.3.4 20250131
> Copyright 2008-2024,2025, Thomas E. Dickey
> Copyright 1991-1996,2014, Michael D. Brennan
>
> random-funcs: srandom/random
> regex-funcs: internal
>
> compiled limits:
> sprintf buffer 8192
> maximum-integer 9223372036854775808
>
> while the other box has GNU awk where it obviously works.
After looking into the build issue, we think it's better to change to
perl; GNU awk has quite a few extended features that standard awk
doesn't support, e.g., BEGINFILE/FPAT/...
Thanks!
Xin
>
> HTH.
>
On Tue, Feb 25, 2025 at 09:10:01AM -0800, Xin Li wrote:
> After looking into the build issue, we think it's better to change to perl;
> GNU awk has quite a few extended features that standard awk doesn't support,
> e.g., BEGINFILE/FPAT/...
... which will make the kernel build depend on yet another tool. I know,
I know, perl is everywhere but someone would crawl out of the woodwork
complaining that building the kernel pulls in even more stuff.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
On 25.02.25 г. 19:49 ч., Borislav Petkov wrote: > On Tue, Feb 25, 2025 at 09:10:01AM -0800, Xin Li wrote: >> After looking into the build issue, we think it's better to change to perl; >> GNU awk has quite a few extended features that standard awk doesn't support, >> e.g., BEGINFILE/FPAT/... > > ... which will make the kernel build depend on yet another tool. I know, > I know, perl is everywhere but someone would crawl out of the woodwork > complaining that building the kernel pulls in even more stuff. > But don't we use perl even now: $ find . -iname *.pl | wc -l 55
On Tue, Feb 25, 2025 at 07:54:50PM +0200, Nikolay Borisov wrote:
> But don't we use perl even now:
>
> $ find . -iname *.pl | wc -l
> 55
You're searching wrong:
$ git grep -w perl arch/x86/
arch/x86/crypto/poly1305-x86_64-cryptogams.pl:1:#!/usr/bin/env perl
$
That's some crypto-special thing.
This'll force it on *everything*.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
On February 25, 2025 10:00:51 AM PST, Borislav Petkov <bp@alien8.de> wrote: >On Tue, Feb 25, 2025 at 07:54:50PM +0200, Nikolay Borisov wrote: >> But don't we use perl even now: >> >> $ find . -iname *.pl | wc -l >> 55 > >You're searching wrong: > >$ git grep -w perl arch/x86/ >arch/x86/crypto/poly1305-x86_64-cryptogams.pl:1:#!/usr/bin/env perl >$ > >That's some crypto-special thing. > >This'll force it on *everything*. > Yeah we had that debate back and forth. Although I personally feel that any sensible build host would have or be able to have Perl, the consensus opinion seems to be that if it can be done with POSIX standard tools or host-side C it should be unless there is a very strong justification to the contrary. I guess at some point that will add host-side Rust, which will be fun since that adds the whole Rust user space runtime.
On Tue, Feb 25, 2025 at 10:10:03AM -0800, H. Peter Anvin wrote:
> Yeah we had that debate back and forth. Although I personally feel that any
> sensible build host would have or be able to have Perl, the consensus
> opinion seems to be that if it can be done with POSIX standard tools or
> host-side C it should be unless there is a very strong justification to the
> contrary.
Right, Xin, please make sure you put this rationale in the commit message so
that people can read it.
> I guess at some point that will add host-side Rust, which will be fun since
> that adds the whole Rust user space runtime.
There's that too. And that'll be even more fun. I can't wait for the
compiler-specific workarounds. We're having a lot of fun with two C compilers
already but who says we can't have more?!
/facepalm.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
On February 25, 2025 10:15:51 AM PST, Borislav Petkov <bp@alien8.de> wrote: >On Tue, Feb 25, 2025 at 10:10:03AM -0800, H. Peter Anvin wrote: >> Yeah we had that debate back and forth. Although I personally feel that any >> sensible build host would have or be able to have Perl, the consensus >> opinion seems to be that if it can be done with POSIX standard tools or >> host-side C it should be unless there is a very strong justification to the >> contrary. > >Right, Xin, please make sure you put this rationale in the commit message so >that people can read it. > >> I guess at some point that will add host-side Rust, which will be fun since >> that adds the whole Rust user space runtime. > >There's that too. And that'll be even more fun. I can't wait for the >compiler-specific workarounds. We're having a lot of fun with two C compilers >already but who says we can't have more?! > >/facepalm. > Yeah. See the thread on this topic, where it seems that the Rust language people haven't even figured out basic things like their aliasing model yet...
On 2/25/2025 10:15 AM, Borislav Petkov wrote: > On Tue, Feb 25, 2025 at 10:10:03AM -0800, H. Peter Anvin wrote: >> Yeah we had that debate back and forth. Although I personally feel that any >> sensible build host would have or be able to have Perl, the consensus >> opinion seems to be that if it can be done with POSIX standard tools or >> host-side C it should be unless there is a very strong justification to the >> contrary. > > Right, Xin, please make sure you put this rationale in the commit message so > that people can read it. Oh, I'm thinking to stick to awk with rewriting the part that a standard POSIX awk doesn't support...
© 2016 - 2026 Red Hat, Inc.