Hao Xiang <hao.xi...@linux.dev> writes: > Enable instruction set enqcmd in build. > > Signed-off-by: Hao Xiang <hao.xi...@linux.dev> > --- > meson.build | 14 ++++++++++++++ > meson_options.txt | 2 ++ > scripts/meson-buildoptions.sh | 3 +++ > 3 files changed, 19 insertions(+) > > diff --git a/meson.build b/meson.build > index 95cee7046e..9e008ddc34 100644 > --- a/meson.build > +++ b/meson.build > @@ -2824,6 +2824,20 @@ config_host_data.set('CONFIG_AVX512BW_OPT', > get_option('avx512bw') \ > int main(int argc, char *argv[]) { return bar(argv[0]); } > '''), error_message: 'AVX512BW not available').allowed()) > > +config_host_data.set('CONFIG_DSA_OPT', get_option('enqcmd') \ > + .require(have_cpuid_h, error_message: 'cpuid.h not available, cannot > enable ENQCMD') \ > + .require(cc.links(''' > + #include <stdint.h> > + #include <cpuid.h> > + #include <immintrin.h> > + static int __attribute__((target("enqcmd"))) bar(void *a) { > + uint64_t dst[8] = { 0 }; > + uint64_t src[8] = { 0 }; > + return _enqcmd(dst, src); > + } > + int main(int argc, char *argv[]) { return bar(argv[argc - 1]); } > + '''), error_message: 'ENQCMD not available').allowed()) > + > # For both AArch64 and AArch32, detect if builtins are available. > config_host_data.set('CONFIG_ARM_AES_BUILTIN', cc.compiles(''' > #include <arm_neon.h> > diff --git a/meson_options.txt b/meson_options.txt > index b5c0bad9e7..63c1bf815b 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -121,6 +121,8 @@ option('avx512f', type: 'feature', value: 'disabled', > description: 'AVX512F optimizations') > option('avx512bw', type: 'feature', value: 'auto', > description: 'AVX512BW optimizations') > +option('enqcmd', type: 'feature', value: 'disabled', > + description: 'MENQCMD optimizations')
s/MENQCMD/ENQCMD/ > option('keyring', type: 'feature', value: 'auto', > description: 'Linux keyring support') > option('libkeyutils', type: 'feature', value: 'auto', > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index 5ace33f167..2cdfc84455 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -93,6 +93,7 @@ meson_options_help() { > printf "%s\n" ' avx2 AVX2 optimizations' > printf "%s\n" ' avx512bw AVX512BW optimizations' > printf "%s\n" ' avx512f AVX512F optimizations' > + printf "%s\n" ' enqcmd ENQCMD optimizations' > printf "%s\n" ' blkio libblkio block device driver' > printf "%s\n" ' bochs bochs image format support' > printf "%s\n" ' bpf eBPF support' > @@ -239,6 +240,8 @@ _meson_option_parse() { > --disable-avx512bw) printf "%s" -Davx512bw=disabled ;; > --enable-avx512f) printf "%s" -Davx512f=enabled ;; > --disable-avx512f) printf "%s" -Davx512f=disabled ;; > + --enable-enqcmd) printf "%s" -Denqcmd=enabled ;; > + --disable-enqcmd) printf "%s" -Denqcmd=disabled ;; > --enable-gcov) printf "%s" -Db_coverage=true ;; > --disable-gcov) printf "%s" -Db_coverage=false ;; > --enable-lto) printf "%s" -Db_lto=true ;;