From 22262ed6a75bc2056ccc0d3a71b8bafe9acfa8f2 Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Oct 04 2022 13:40:51 +0000 Subject: Import openvswitch2.17-2.17.0-54 from Fast DataPath --- diff --git a/SOURCES/openvswitch-2.17.0.patch b/SOURCES/openvswitch-2.17.0.patch index f58bf5c..8e03dd8 100644 --- a/SOURCES/openvswitch-2.17.0.patch +++ b/SOURCES/openvswitch-2.17.0.patch @@ -1,5 +1,5 @@ diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh -index 6cd38ff3ef..2dabd3d0a4 100755 +index 6cd38ff3ef..392c7ee79c 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -220,7 +220,7 @@ fi @@ -7,7 +7,7 @@ index 6cd38ff3ef..2dabd3d0a4 100755 if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then if [ -z "$DPDK_VER" ]; then - DPDK_VER="21.11" -+ DPDK_VER="21.11.1" ++ DPDK_VER="21.11.2" fi install_dpdk $DPDK_VER fi @@ -60,7 +60,7 @@ index eac3504e48..6c9dddbb59 100644 strategy: diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst -index af524251ff..33a0d5d2d4 100644 +index af524251ff..49895c595f 100644 --- a/Documentation/faq/releases.rst +++ b/Documentation/faq/releases.rst @@ -32,7 +32,7 @@ Q: What does it mean for an Open vSwitch release to be LTS (long-term support)? @@ -72,21 +72,25 @@ index af524251ff..33a0d5d2d4 100644 For more information on the Open vSwitch release process, refer to :doc:`/internals/release-process`. -@@ -208,9 +208,9 @@ Q: What DPDK version does each Open vSwitch release work with? +@@ -206,11 +206,11 @@ Q: What DPDK version does each Open vSwitch release work with? + 2.10.x 17.11.10 + 2.11.x 18.11.9 2.12.x 18.11.9 - 2.13.x 19.11.10 - 2.14.x 19.11.10 +- 2.13.x 19.11.10 +- 2.14.x 19.11.10 - 2.15.x 20.11.1 - 2.16.x 20.11.1 - 2.17.x 21.11.0 -+ 2.15.x 20.11.4 -+ 2.16.x 20.11.4 -+ 2.17.x 21.11.1 ++ 2.13.x 19.11.13 ++ 2.14.x 19.11.13 ++ 2.15.x 20.11.6 ++ 2.16.x 20.11.6 ++ 2.17.x 21.11.2 ============ ======== Q: Are all the DPDK releases that OVS versions work with maintained? diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst -index d9f44055db..f8f01bfadd 100644 +index d9f44055db..a284e68514 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements @@ -94,7 +98,7 @@ index d9f44055db..f8f01bfadd 100644 vSwitch with DPDK will require the following: -- DPDK 21.11 -+- DPDK 21.11.1 ++- DPDK 21.11.2 - A `DPDK supported NIC`_ @@ -105,9 +109,9 @@ index d9f44055db..f8f01bfadd 100644 - $ wget https://fast.dpdk.org/rel/dpdk-21.11.tar.xz - $ tar xf dpdk-21.11.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-21.11 -+ $ wget https://fast.dpdk.org/rel/dpdk-21.11.1.tar.xz -+ $ tar xf dpdk-21.11.1.tar.xz -+ $ export DPDK_DIR=/usr/src/dpdk-stable-21.11 ++ $ wget https://fast.dpdk.org/rel/dpdk-21.11.2.tar.xz ++ $ tar xf dpdk-21.11.2.tar.xz ++ $ export DPDK_DIR=/usr/src/dpdk-stable-21.11.2 $ cd $DPDK_DIR #. Configure and install DPDK using Meson @@ -125,10 +129,10 @@ index c4300cd53e..a297aadac8 100644 - GNU make. diff --git a/NEWS b/NEWS -index c10e9bfacc..7c71284f97 100644 +index c10e9bfacc..36fcbb8748 100644 --- a/NEWS +++ b/NEWS -@@ -1,3 +1,33 @@ +@@ -1,3 +1,51 @@ +v2.17.3 - xx xxx xxxx +--------------------- + - OVSDB: @@ -136,6 +140,24 @@ index c10e9bfacc..7c71284f97 100644 + configuration in a clustered databse independently for each server. + E.g. for listening on unique addresses. See the ovsdb.local-config.5 + manpage for schema details. ++ - DPDK: ++ * OVS validated with DPDK 21.11.2. ++ DPDK 21.11.2 contains fixes for the following CVEs: ++ CVE-2022-28199 cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28199 ++ CVE-2022-2132 cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-2132 ++ A bug was introduced in DPDK 21.11.1 by the commit ++ 01e3dee29c02 ("vhost: fix unsafe vring addresses modifications"). ++ This bug can cause a deadlock when vIOMMU is enabled and NUMA ++ reallocation of the virtqueues happen. ++ A fix has been posted and pushed to the DPDK 21.11 branch. ++ It can be found here: ++ https://patches.dpdk.org/project/dpdk/patch/20220725203206.427083-2-david.marchand@redhat.com/. ++ If a user wishes to avoid the issue then it is recommended to use ++ DPDK 21.11.0 until the release of DPDK 21.11.3. ++ It should be noted that DPDK 21.11.0 does not benefit from the numerous ++ bug and CVE fixes addressed since its release. ++ If a user wishes to benefit from these fixes it is recommended to use ++ DPDK 21.11.2. + +v2.17.2 - 15 Jun 2022 +--------------------- @@ -54288,7 +54310,7 @@ index 47115a7b85..ba5d179a65 100644 /* Transactions with named-uuid row names. */ struct json *ovsdb_datum_to_json_with_row_names(const struct ovsdb_datum *, diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c -index c19128d55c..882ede7559 100644 +index c19128d55c..917868c54a 100644 --- a/lib/ovsdb-idl.c +++ b/lib/ovsdb-idl.c @@ -389,25 +389,25 @@ ovsdb_idl_clear(struct ovsdb_idl *db) @@ -54413,7 +54435,18 @@ index c19128d55c..882ede7559 100644 if (!ovsdb_idl_track_is_set(row->table)) { ovs_list_remove(&row->track_node); ovsdb_idl_row_unparse(row); -@@ -2729,7 +2729,7 @@ ovsdb_idl_txn_increment(struct ovsdb_idl_txn *txn, +@@ -2367,6 +2367,10 @@ ovsdb_idl_insert_row(struct ovsdb_idl_row *row, const struct shash *data) + static void + ovsdb_idl_delete_row(struct ovsdb_idl_row *row) + { ++ /* If row has to be reparsed, reparse it before it's deleted. */ ++ if (!ovs_list_is_empty(&row->reparse_node)) { ++ ovsdb_idl_row_parse(row); ++ } + ovsdb_idl_remove_from_indexes(row); + ovsdb_idl_row_clear_arcs(row, true); + ovsdb_idl_row_destroy(row); +@@ -2729,7 +2733,7 @@ ovsdb_idl_txn_increment(struct ovsdb_idl_txn *txn, void ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *txn) { @@ -54422,7 +54455,7 @@ index c19128d55c..882ede7559 100644 if (txn->status == TXN_INCOMPLETE) { ovsdb_cs_forget_transaction(txn->idl->cs, txn->request_id); -@@ -2739,7 +2739,7 @@ ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *txn) +@@ -2739,7 +2743,7 @@ ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *txn) ovsdb_idl_txn_abort(txn); ds_destroy(&txn->comment); free(txn->error); @@ -54431,7 +54464,7 @@ index c19128d55c..882ede7559 100644 free(insert); } hmap_destroy(&txn->inserted_rows); -@@ -2824,7 +2824,7 @@ substitute_uuids(struct json *json, const struct ovsdb_idl_txn *txn) +@@ -2824,7 +2828,7 @@ substitute_uuids(struct json *json, const struct ovsdb_idl_txn *txn) static void ovsdb_idl_txn_disassemble(struct ovsdb_idl_txn *txn) { @@ -54440,7 +54473,7 @@ index c19128d55c..882ede7559 100644 /* This must happen early. Otherwise, ovsdb_idl_row_parse() will call an * ovsdb_idl_column's 'parse' function, which will call -@@ -2832,7 +2832,7 @@ ovsdb_idl_txn_disassemble(struct ovsdb_idl_txn *txn) +@@ -2832,7 +2836,7 @@ ovsdb_idl_txn_disassemble(struct ovsdb_idl_txn *txn) * transaction and fail to update the graph. */ txn->idl->txn = NULL; @@ -55930,7 +55963,7 @@ index bd60adcbc8..2442ceca74 100644 [ax_cv_func_posix_memalign_works=no], [ax_cv_func_posix_memalign_works=no])]) diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 -index 4c3bace6ef..21808483e9 100644 +index 4c3bace6ef..09134feca0 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -21,7 +21,7 @@ AC_DEFUN([OVS_CHECK_COVERAGE], @@ -56014,6 +56047,29 @@ index 4c3bace6ef..21808483e9 100644 [directory used for conf.db [[SYSCONFDIR/PACKAGE]]]), [DBDIR=$withval], [DBDIR='${sysconfdir}/${PACKAGE}']) +@@ -436,8 +436,8 @@ AC_DEFUN([OVS_CHECK_BINUTILS_AVX512], + mkdir -p build-aux + OBJFILE=build-aux/binutils_avx512_check.o + GATHER_PARAMS='0x8(,%ymm1,1),%ymm0{%k2}' +- echo "vpgatherqq $GATHER_PARAMS" | as --64 -o $OBJFILE - + if ($CC -dumpmachine | grep x86_64) >/dev/null 2>&1; then ++ echo "vpgatherqq $GATHER_PARAMS" | as --64 -o $OBJFILE - + if (objdump -d --no-show-raw-insn $OBJFILE | grep -q $GATHER_PARAMS) >/dev/null 2>&1; then + ovs_cv_binutils_avx512_good=yes + else +@@ -446,11 +446,11 @@ AC_DEFUN([OVS_CHECK_BINUTILS_AVX512], + dnl and causing zmm usage with buggy binutils versions. + CFLAGS="$CFLAGS -mno-avx512f" + fi ++ rm $OBJFILE + else + dnl non x86_64 architectures don't have avx512, so not affected + ovs_cv_binutils_avx512_good=no + fi]) +- rm $OBJFILE + if test "$ovs_cv_binutils_avx512_good" = yes; then + AC_DEFINE([HAVE_LD_AVX512_GOOD], [1], + [Define to 1 if binutils correctly supports AVX512.]) diff --git a/ofproto/bond.c b/ofproto/bond.c index cdfdf0b9d8..6ecd6e1c9f 100644 --- a/ofproto/bond.c @@ -62376,6 +62432,103 @@ index fc6253cfe9..920b833b72 100644 join_cluster() { local i=$1 +diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at +index 62e2b63832..19493a9254 100644 +--- a/tests/ovsdb-idl.at ++++ b/tests/ovsdb-idl.at +@@ -2437,3 +2437,92 @@ unix:socket2 remote has col id in table simple7 + + OVSDB_SERVER_SHUTDOWN + AT_CLEANUP ++ ++dnl This test checks that inserting and deleting the source of a reference ++dnl doesn't remove the reference in the (deleted) source tracked record. ++OVSDB_CHECK_IDL_TRACK([track, insert and delete, refs to link1], ++ [], ++ [['["idltest", ++ {"op": "insert", ++ "table": "link2", ++ "uuid-name": "l2row0", ++ "row": {"i": 1, "l1": ["set", [["named-uuid", "l1row0"]]]} ++ }, ++ {"op": "insert", ++ "table": "link1", ++ "uuid-name": "l1row0", ++ "row": {"i": 1, "k": ["named-uuid", "l1row0"]} ++ }, ++ {"op": "insert", ++ "table": "link2", ++ "uuid-name": "l2row1", ++ "row": {"i": 2, "l1": ["set", [["named-uuid", "l1row0"]]]} ++ } ++ ]' \ ++ '+["idltest", ++ {"op": "delete", ++ "table": "link2", ++ "where": [["i", "==", 2]]} ++ ]' \ ++ '["idltest", ++ {"op": "delete", ++ "table": "link2", ++ "where": [["i", "==", 1]]} ++ ]' ++ ]], ++ [[000: empty ++001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]} ++002: {"error":null,"result":[{"count":1}]} ++003: table link1: inserted row: i=1 k=1 ka=[] l2= uuid=<1> ++003: table link1: updated columns: i k ++003: table link2: inserted row: i=1 l1=1 uuid=<0> ++003: table link2: inserted/deleted row: i=2 l1=1 uuid=<2> ++003: table link2: updated columns: i l1 ++003: table link2: updated columns: i l1 ++004: {"error":null,"result":[{"count":1}]} ++005: table link1: i=1 k=1 ka=[] l2= uuid=<1> ++006: done ++]]) ++OVSDB_CHECK_IDL_TRACK([track, insert and delete, refs to link2], ++ [], ++ [['["idltest", ++ {"op": "insert", ++ "table": "link1", ++ "uuid-name": "l1row0", ++ "row": {"i": 1, "k": ["named-uuid", "l1row0"], "l2": ["set", [["named-uuid", "l2row0"]]]} ++ }, ++ {"op": "insert", ++ "table": "link2", ++ "uuid-name": "l2row0", ++ "row": {"i": 1} ++ }, ++ {"op": "insert", ++ "table": "link1", ++ "uuid-name": "l1row1", ++ "row": {"i": 2, "k": ["named-uuid", "l1row0"], "l2": ["set", [["named-uuid", "l2row0"]]]} ++ } ++ ]' \ ++ '+["idltest", ++ {"op": "delete", ++ "table": "link1", ++ "where": [["i", "==", 2]]} ++ ]' \ ++ '["idltest", ++ {"op": "delete", ++ "table": "link1", ++ "where": [["i", "==", 1]]} ++ ]' ++ ]], ++ [[000: empty ++001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]} ++002: {"error":null,"result":[{"count":1}]} ++003: table link1: inserted row: i=1 k=1 ka=[] l2=1 uuid=<0> ++003: table link1: inserted/deleted row: i=2 k=1 ka=[] l2=1 uuid=<2> ++003: table link1: updated columns: i k l2 ++003: table link1: updated columns: i k l2 ++003: table link2: inserted row: i=1 l1= uuid=<1> ++003: table link2: updated columns: i ++004: {"error":null,"result":[{"count":1}]} ++005: table link2: i=1 l1= uuid=<1> ++006: done ++]]) diff --git a/tests/ovsdb-server.at b/tests/ovsdb-server.at index 876cb836cd..e672c13b27 100644 --- a/tests/ovsdb-server.at @@ -64325,7 +64478,7 @@ index 6f1fb059bc..ac82f2048e 100644 } } diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c -index ca4e87b811..3194f50f2d 100644 +index ca4e87b811..c7bc32a246 100644 --- a/tests/test-ovsdb.c +++ b/tests/test-ovsdb.c @@ -294,11 +294,24 @@ print_and_free_ovsdb_error(struct ovsdb_error *error) @@ -64569,6 +64722,26 @@ index ca4e87b811..3194f50f2d 100644 /* Create table. */ json = parse_json("{\"name\": \"testdb\", " " \"tables\": " +@@ -1885,11 +1946,14 @@ format_idl_row(const struct ovsdb_idl_row *row, int step, const char *contents, + const char *change_str = + !ovsdb_idl_track_is_set(row->table) + ? "" +- : ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_INSERT) > 0 +- ? "inserted row: " +- : ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_DELETE) > 0 +- ? "deleted row: " +- : ""; ++ : ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_INSERT) > 0 && ++ ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_DELETE) > 0 ++ ? "inserted/deleted row: " ++ : ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_INSERT) > 0 ++ ? "inserted row: " ++ : ovsdb_idl_row_get_seqno(row, OVSDB_IDL_CHANGE_DELETE) > 0 ++ ? "deleted row: " ++ : ""; + + if (terse) { + return xasprintf("%03d: table %s", step, row->table->class_->name); diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py index 853264f22b..402cacbe9d 100644 --- a/tests/test-ovsdb.py diff --git a/SPECS/openvswitch2.17.spec b/SPECS/openvswitch2.17.spec index 70fe0b1..b8ba7b9 100644 --- a/SPECS/openvswitch2.17.spec +++ b/SPECS/openvswitch2.17.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.17.0 -Release: 52%{?dist} +Release: 54%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -743,6 +743,19 @@ exit 0 %endif %changelog +* Tue Oct 04 2022 Open vSwitch CI - 2.17.0-54 +- Merging upstream branch-2.17 [RH git: 2b512f855d] + Commit list: + 26a11ca610 dpdk: Use DPDK 21.11.2 release. + + +* Wed Sep 28 2022 Open vSwitch CI - 2.17.0-53 +- Merging upstream branch-2.17 [RH git: a2109e1f4c] + Commit list: + edf699ec64 m4: Test avx512 for x86 only. + 1989caf9ea ovsdb-idl: Preserve references for rows deleted in same IDL run as their insertion. (#2126450) + + * Mon Sep 19 2022 Open vSwitch CI - 2.17.0-52 - Merging upstream branch-2.17 [RH git: 6d00d0c803] Commit list: