From 4dcb94480bc7f57bce66721d4305f8bc69d90ac9 Mon Sep 17 00:00:00 2001 From: Kamil Godzwon Date: Thu, 16 Feb 2023 12:30:03 -0500 Subject: [PATCH] autobuild: patch DPDK with "hash: fix GFNI implementation build with GCC12" This affects CYP systems where the cpus do indeed support these instructions. Apply this patch, when building SPDK with external DPDK (versions <23.03.0) Signed-off-by: Kamil Godzwon Change-Id: I9aded9014c6887e9c0f838b28cef5a0e9c42eda5 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16829 Reviewed-by: Michal Berger Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins Reviewed-by: Tomasz Zawadzki --- test/common/autobuild_common.sh | 5 +++++ .../dpdk/21.11+/dpdk_rte_thash_gfni.patch | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_rte_thash_gfni.patch diff --git a/test/common/autobuild_common.sh b/test/common/autobuild_common.sh index f2baa5ce0..dec5051c0 100755 --- a/test/common/autobuild_common.sh +++ b/test/common/autobuild_common.sh @@ -167,6 +167,11 @@ _build_native_dpdk() { else patch -p1 < "$rootdir/test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_qat.patch" + if le $dpdk_ver 23.03.0; then + # Commit https://review.spdk.io/gerrit/c/spdk/dpdk/+/16828 is required for DPDK <23.03.0 + patch -p1 < "$rootdir/test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_rte_thash_gfni.patch" + fi + # Commit https://review.spdk.io/gerrit/c/spdk/dpdk/+/16134 is required for DPDK 22.11+ if ge $dpdk_ver 22.11.0; then patch -p1 < "$rootdir/test/common/config/pkgdep/patches/dpdk/22.11+/dpdk_ipsec_mb.patch" diff --git a/test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_rte_thash_gfni.patch b/test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_rte_thash_gfni.patch new file mode 100644 index 000000000..814a023a2 --- /dev/null +++ b/test/common/config/pkgdep/patches/dpdk/21.11+/dpdk_rte_thash_gfni.patch @@ -0,0 +1,17 @@ +diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h +index 880739b710..7bb76ac1bb 100644 +--- a/lib/hash/rte_thash_x86_gfni.h ++++ b/lib/hash/rte_thash_x86_gfni.h +@@ -88,8 +88,10 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple, + const __m512i shift_8 = _mm512_set1_epi8(8); + __m512i xor_acc = _mm512_setzero_si512(); + __m512i perm_bytes = _mm512_setzero_si512(); +- __m512i vals, matrixes, tuple_bytes, tuple_bytes_2; +- __mmask64 load_mask, permute_mask, permute_mask_2; ++ __m512i vals, matrixes, tuple_bytes_2; ++ __m512i tuple_bytes = _mm512_setzero_si512(); ++ __mmask64 load_mask, permute_mask_2; ++ __mmask64 permute_mask = 0; + int chunk_len = 0, i = 0; + uint8_t mtrx_msk; + const int prepend = 3;