commit d0ce87e41cdc9094310b05d7f00c1a350cc95673 (tag: t_fail, refs/bisect/bad) Author: Timothy McDaniel Date: Mon Jun 13 15:39:11 2022 -0500 event/dlb2: support single 512B write of 4 QEs On Xeon, 512b accesses are available, so movdir64 instruction is able to perform 512b read and write to DLB producer port. In order for movdir64 to be able to pull its data from store buffers (store-buffer-forwarding) (before actual write), data should be in single 512b write format. This commit add change when code is built for Xeon with 512b AVX support to make single 512b write of all 4 QEs instead of 4x64b writes. Signed-off-by: Timothy McDaniel Acked-by: Kent Wires Following fixes meson, with command `meson -Dc_args='-Werror' build` :: diff --git a/drivers/event/dlb2/meson.build b/drivers/event/dlb2/meson.build index 20ef159ab327..c231df83b1a7 100644 --- a/drivers/event/dlb2/meson.build +++ b/drivers/event/dlb2/meson.build @@ -23,7 +23,7 @@ sources = files( # we are building 64-bit binary (checked above) AND binutils # can generate proper code -if binutils_ok +#if binutils_ok # compile AVX512 version if either: # a. we have AVX512VL supported in minimum instruction set @@ -37,30 +37,30 @@ if binutils_ok # linked into main lib. # check if all required flags already enabled (variant a). - dlb2_avx512_on = false - if cc.get_define(f, args: machine_args) == '__AVX512VL__' - dlb2_avx512_on = true - endif +# dlb2_avx512_on = false +# if cc.get_define(f, args: machine_args) == '__AVX512VL__' +# dlb2_avx512_on = true +# endif - if dlb2_avx512_on == true +# if dlb2_avx512_on == true - sources += files('dlb2_avx512.c') - cflags += '-DCC_AVX512_SUPPORT' +# sources += files('dlb2_avx512.c') +# cflags += '-DCC_AVX512_SUPPORT' - elif cc.has_multi_arguments('-mavx512vl') +# elif cc.has_multi_arguments('-mavx512vl') - cflags += '-DCC_AVX512_SUPPORT' - avx512_tmplib = static_library('avx512_tmp', - 'dlb2_avx512.c', - dependencies: [static_rte_eal, static_rte_eventdev], - c_args: cflags + ['-mavx512vl']) - objs += avx512_tmplib.extract_objects('dlb2_avx512.c') - else +# cflags += '-DCC_AVX512_SUPPORT' +# avx512_tmplib = static_library('avx512_tmp', +# 'dlb2_avx512.c', +# dependencies: [static_rte_eal, static_rte_eventdev], +# c_args: cflags + ['-mavx512vl']) +# objs += avx512_tmplib.extract_objects('dlb2_avx512.c') +# else +# sources += files('dlb2_sse.c') +# endif +#else sources += files('dlb2_sse.c') - endif -else - sources += files('dlb2_sse.c') -endif +#endif headers = files('rte_pmd_dlb2.h')