diff mbox series

[ovs-dev,v2] dpdk: Update to use v23.11.

Message ID 20240115142814.3646692-1-david.marchand@redhat.com
State Accepted
Commit 8893e24d9d0921aaf934f263a06ba223ef0db369
Headers show
Series [ovs-dev,v2] dpdk: Update to use v23.11. | expand

Checks

Context Check Description
ovsrobot/apply-robot warning apply and check: warning
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/intel-ovs-compilation fail test: fail

Commit Message

David Marchand Jan. 15, 2024, 2:28 p.m. UTC
This commit adds support for DPDK v23.11.
It updates the CI script and documentation and includes the following
changes coming from the dpdk-latest branch:

- sparse: Add some compiler intrinsics for DPDK build.
  https://patchwork.ozlabs.org/project/openvswitch/list/?series=371129&state=*

- ci: Cache DPDK installed libraries only.
- ci: Reduce optional libraries in DPDK.
  https://patchwork.ozlabs.org/project/openvswitch/list/?series=383367&state=*

- system-dpdk: Ignore net/ice error log about QinQ offloading.
  https://patchwork.ozlabs.org/project/openvswitch/list/?series=385259&state=*

There is a known issue with i40e VF devices where OVS main thread may
block when adding such devices as dpif-netdev dpdk ports.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 .ci/dpdk-build.sh                        | 28 +++++++++++++++---------
 .ci/linux-build.sh                       |  9 ++++----
 .github/workflows/build-and-test.yml     |  4 ++--
 Documentation/faq/releases.rst           |  2 +-
 Documentation/intro/install/dpdk.rst     | 16 +++++++-------
 Documentation/topics/dpdk/phy.rst        | 12 +++++-----
 Documentation/topics/dpdk/vdev.rst       |  2 +-
 Documentation/topics/dpdk/vhost-user.rst |  2 +-
 Documentation/topics/testing.rst         |  2 +-
 Documentation/topics/userspace-tso.rst   |  2 +-
 NEWS                                     |  9 ++++++++
 debian/control.in                        |  2 +-
 include/sparse/automake.mk               |  1 +
 include/sparse/ia32intrin.h              | 23 +++++++++++++++++++
 rhel/openvswitch-fedora.spec.in          |  2 +-
 tests/system-dpdk-macros.at              |  1 +
 16 files changed, 80 insertions(+), 37 deletions(-)
 create mode 100644 include/sparse/ia32intrin.h

Comments

Kevin Traynor Jan. 15, 2024, 4:13 p.m. UTC | #1
On 15/01/2024 14:28, David Marchand wrote:
> This commit adds support for DPDK v23.11.
> It updates the CI script and documentation and includes the following
> changes coming from the dpdk-latest branch:
> 
> - sparse: Add some compiler intrinsics for DPDK build.
>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=371129&state=*
> 
> - ci: Cache DPDK installed libraries only.
> - ci: Reduce optional libraries in DPDK.
>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=383367&state=*
> 
> - system-dpdk: Ignore net/ice error log about QinQ offloading.
>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=385259&state=*
> 
> There is a known issue with i40e VF devices where OVS main thread may
> block when adding such devices as dpif-netdev dpdk ports.
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---

Acked-by: Kevin Traynor <ktraynor@redhat.com>
Ilya Maximets Jan. 16, 2024, 12:03 a.m. UTC | #2
On 1/15/24 17:13, Kevin Traynor wrote:
> On 15/01/2024 14:28, David Marchand wrote:
>> This commit adds support for DPDK v23.11.
>> It updates the CI script and documentation and includes the following
>> changes coming from the dpdk-latest branch:
>>
>> - sparse: Add some compiler intrinsics for DPDK build.
>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=371129&state=*
>>
>> - ci: Cache DPDK installed libraries only.
>> - ci: Reduce optional libraries in DPDK.
>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=383367&state=*
>>
>> - system-dpdk: Ignore net/ice error log about QinQ offloading.
>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=385259&state=*
>>
>> There is a known issue with i40e VF devices where OVS main thread may
>> block when adding such devices as dpif-netdev dpdk ports.
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>> ---
> 
> Acked-by: Kevin Traynor <ktraynor@redhat.com>
> 

I removed the mentioning of the internal 'dpif-netdev' name from
the NEWS file and applied the change.

Michael, could you, please, update the Intel CI to use 23.11 ?

Ivan, please, re-post (with a version bump) your rte_flow patch,
so we can accept it.

Thanks!
Best regards, Ilya Maximets.
Ivan Malov Jan. 16, 2024, 1 a.m. UTC | #3
Hi Ilya,

On Tue, 16 Jan 2024, Ilya Maximets wrote:

> On 1/15/24 17:13, Kevin Traynor wrote:
>> On 15/01/2024 14:28, David Marchand wrote:
>>> This commit adds support for DPDK v23.11.
>>> It updates the CI script and documentation and includes the following
>>> changes coming from the dpdk-latest branch:
>>>
>>> - sparse: Add some compiler intrinsics for DPDK build.
>>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=371129&state=*
>>>
>>> - ci: Cache DPDK installed libraries only.
>>> - ci: Reduce optional libraries in DPDK.
>>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=383367&state=*
>>>
>>> - system-dpdk: Ignore net/ice error log about QinQ offloading.
>>>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=385259&state=*
>>>
>>> There is a known issue with i40e VF devices where OVS main thread may
>>> block when adding such devices as dpif-netdev dpdk ports.
>>>
>>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>>> ---
>>
>> Acked-by: Kevin Traynor <ktraynor@redhat.com>
>>
>
> I removed the mentioning of the internal 'dpif-netdev' name from
> the NEWS file and applied the change.
>
> Michael, could you, please, update the Intel CI to use 23.11 ?
>
> Ivan, please, re-post (with a version bump) your rte_flow patch,
> so we can accept it.

Done. See https://patchwork.ozlabs.org/project/openvswitch/patch/20240116004848.7957-1-ivan.malov@arknetworks.am/ .

Thank you.

>
> Thanks!
> Best regards, Ilya Maximets.
>
Phelan, Michael Jan. 16, 2024, 9:41 a.m. UTC | #4
> -----Original Message-----
> From: Ilya Maximets <i.maximets@ovn.org>
> Sent: Tuesday, January 16, 2024 12:03 AM
> To: Kevin Traynor <ktraynor@redhat.com>; Marchand, David
> <david.marchand@redhat.com>; dev@openvswitch.org; Ivan Malov
> <ivan.malov@arknetworks.am>; Phelan, Michael
> <michael.phelan@intel.com>
> Cc: i.maximets@ovn.org; Stokes, Ian <ian.stokes@intel.com>
> Subject: Re: [PATCH v2] dpdk: Update to use v23.11.
> 
> On 1/15/24 17:13, Kevin Traynor wrote:
> > On 15/01/2024 14:28, David Marchand wrote:
> >> This commit adds support for DPDK v23.11.
> >> It updates the CI script and documentation and includes the following
> >> changes coming from the dpdk-latest branch:
> >>
> >> - sparse: Add some compiler intrinsics for DPDK build.
> >>
> >> https://patchwork.ozlabs.org/project/openvswitch/list/?series=371129&
> >> state=*
> >>
> >> - ci: Cache DPDK installed libraries only.
> >> - ci: Reduce optional libraries in DPDK.
> >>
> >> https://patchwork.ozlabs.org/project/openvswitch/list/?series=383367&
> >> state=*
> >>
> >> - system-dpdk: Ignore net/ice error log about QinQ offloading.
> >>
> >> https://patchwork.ozlabs.org/project/openvswitch/list/?series=385259&
> >> state=*
> >>
> >> There is a known issue with i40e VF devices where OVS main thread may
> >> block when adding such devices as dpif-netdev dpdk ports.
> >>
> >> Signed-off-by: David Marchand <david.marchand@redhat.com>
> >> ---
> >
> > Acked-by: Kevin Traynor <ktraynor@redhat.com>
> >
> 
> I removed the mentioning of the internal 'dpif-netdev' name from the NEWS
> file and applied the change.
> 
> Michael, could you, please, update the Intel CI to use 23.11 ?
No problem, master is updated to test against 23.11.

Thanks,
Michael.
> 
> Ivan, please, re-post (with a version bump) your rte_flow patch, so we can
> accept it.
> 
> Thanks!
> Best regards, Ilya Maximets.
diff mbox series

Patch

diff --git a/.ci/dpdk-build.sh b/.ci/dpdk-build.sh
index d4c178ee0d..23f3166a54 100755
--- a/.ci/dpdk-build.sh
+++ b/.ci/dpdk-build.sh
@@ -5,25 +5,27 @@  set -x
 
 function build_dpdk()
 {
-    local VERSION_FILE="dpdk-dir/cached-version"
     local DPDK_VER=$1
     local DPDK_OPTS=""
+    local DPDK_INSTALL_DIR="$(pwd)/dpdk-dir"
+    local VERSION_FILE="$DPDK_INSTALL_DIR/cached-version"
 
-    rm -rf dpdk-dir
+    rm -rf dpdk-src
+    rm -rf $DPDK_INSTALL_DIR
 
     if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then
-        git clone --single-branch $DPDK_GIT dpdk-dir -b "${DPDK_VER##refs/*/}"
-        pushd dpdk-dir
+        git clone --single-branch $DPDK_GIT dpdk-src -b "${DPDK_VER##refs/*/}"
+        pushd dpdk-src
         git log -1 --oneline
     else
         wget https://fast.dpdk.org/rel/dpdk-$1.tar.xz
         tar xvf dpdk-$1.tar.xz > /dev/null
         DIR_NAME=$(tar -tf dpdk-$1.tar.xz | head -1 | cut -f1 -d"/")
-        mv ${DIR_NAME} dpdk-dir
-        pushd dpdk-dir
+        mv ${DIR_NAME} dpdk-src
+        pushd dpdk-src
     fi
 
-    # Switching to 'default' machine to make dpdk-dir cache usable on
+    # Switching to 'default' machine to make the dpdk cache usable on
     # different CPUs. We can't be sure that all CI machines are exactly same.
     DPDK_OPTS="$DPDK_OPTS -Dmachine=default"
 
@@ -40,16 +42,22 @@  function build_dpdk()
     DPDK_OPTS="$DPDK_OPTS -Denable_apps=test-pmd"
     enable_drivers="net/null,net/af_xdp,net/tap,net/virtio,net/pcap"
     DPDK_OPTS="$DPDK_OPTS -Denable_drivers=$enable_drivers"
+    # OVS depends on the vhost library (and its dependencies).
+    # net/tap depends on the gso library.
+    DPDK_OPTS="$DPDK_OPTS -Denable_libs=cryptodev,dmadev,gso,vhost"
 
     # Install DPDK using prefix.
-    DPDK_OPTS="$DPDK_OPTS --prefix=$(pwd)/build"
+    DPDK_OPTS="$DPDK_OPTS --prefix=$DPDK_INSTALL_DIR"
 
     meson $DPDK_OPTS build
     ninja -C build
     ninja -C build install
-
-    echo "Installed DPDK in $(pwd)"
     popd
+
+    # Remove examples sources.
+    rm -rf $DPDK_INSTALL_DIR/share/dpdk/examples
+
+    echo "Installed DPDK in $DPDK_INSTALL_DIR"
     echo "${DPDK_VER}" > ${VERSION_FILE}
 }
 
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 90581c10b7..cf1462a0c4 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -10,8 +10,9 @@  JOBS=${JOBS:-"-j4"}
 
 function install_dpdk()
 {
-    local VERSION_FILE="dpdk-dir/cached-version"
-    local DPDK_LIB=$(pwd)/dpdk-dir/build/lib/x86_64-linux-gnu
+    local DPDK_INSTALL_DIR="$(pwd)/dpdk-dir"
+    local VERSION_FILE="${DPDK_INSTALL_DIR}/cached-version"
+    local DPDK_LIB=${DPDK_INSTALL_DIR}/lib/x86_64-linux-gnu
 
     if [ "$DPDK_SHARED" ]; then
         EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=shared"
@@ -27,13 +28,13 @@  function install_dpdk()
     export PATH=$(pwd)/dpdk-dir/build/bin:$PATH
 
     if [ ! -f "${VERSION_FILE}" ]; then
-        echo "Could not find DPDK in $(pwd)/dpdk-dir"
+        echo "Could not find DPDK in $DPDK_INSTALL_DIR"
         return 1
     fi
 
     # Update the library paths.
     sudo ldconfig
-    echo "Found cached DPDK $(cat ${VERSION_FILE}) build in $(pwd)/dpdk-dir"
+    echo "Found cached DPDK $(cat ${VERSION_FILE}) build in $DPDK_INSTALL_DIR"
 }
 
 function configure_ovs()
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index 710757693d..7bfb42a422 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -7,8 +7,8 @@  jobs:
     env:
       dependencies: gcc libbpf-dev libnuma-dev libpcap-dev ninja-build pkgconf
       CC: gcc
-      DPDK_GIT: https://dpdk.org/git/dpdk-stable
-      DPDK_VER: 22.11.1
+      DPDK_GIT: https://dpdk.org/git/dpdk
+      DPDK_VER: 23.11
     name: dpdk gcc
     outputs:
       dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }}
diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
index aa69eefa13..da185ae1dc 100644
--- a/Documentation/faq/releases.rst
+++ b/Documentation/faq/releases.rst
@@ -236,7 +236,7 @@  Q: Are all the DPDK releases that OVS versions work with maintained?
     The latest information about DPDK stable and LTS releases can be found
     at `DPDK stable`_.
 
-.. _DPDK stable: http://doc.dpdk.org/guides-22.11/contributing/stable.html
+.. _DPDK stable: http://doc.dpdk.org/guides-23.11/contributing/stable.html
 
 Q: I get an error like this when I configure Open vSwitch:
 
diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst
index 63a0ebb23b..ad9bdf22c0 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -42,7 +42,7 @@  Build requirements
 In addition to the requirements described in :doc:`general`, building Open
 vSwitch with DPDK will require the following:
 
-- DPDK 22.11.1
+- DPDK 23.11
 
 - A `DPDK supported NIC`_
 
@@ -59,8 +59,8 @@  vSwitch with DPDK will require the following:
 
 Detailed system requirements can be found at `DPDK requirements`_.
 
-.. _DPDK supported NIC: https://doc.dpdk.org/guides-22.11/nics/index.html
-.. _DPDK requirements: https://doc.dpdk.org/guides-22.11/linux_gsg/sys_reqs.html
+.. _DPDK supported NIC: https://doc.dpdk.org/guides-23.11/nics/index.html
+.. _DPDK requirements: https://doc.dpdk.org/guides-23.11/linux_gsg/sys_reqs.html
 
 .. _dpdk-install:
 
@@ -73,9 +73,9 @@  Install DPDK
 #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
 
        $ cd /usr/src/
-       $ wget https://fast.dpdk.org/rel/dpdk-22.11.1.tar.xz
-       $ tar xf dpdk-22.11.1.tar.xz
-       $ export DPDK_DIR=/usr/src/dpdk-stable-22.11.1
+       $ wget https://fast.dpdk.org/rel/dpdk-23.11.tar.xz
+       $ tar xf dpdk-23.11.tar.xz
+       $ export DPDK_DIR=/usr/src/dpdk-23.11
        $ cd $DPDK_DIR
 
 #. Configure and install DPDK using Meson
@@ -121,7 +121,7 @@  Install DPDK
 
 .. _DPDK sources: http://dpdk.org/rel
 .. _DPDK documentation:
-   https://doc.dpdk.org/guides-22.11/linux_gsg/build_dpdk.html
+   https://doc.dpdk.org/guides-23.11/linux_gsg/build_dpdk.html
 
 Install OVS
 ~~~~~~~~~~~
@@ -722,7 +722,7 @@  Limitations
   release notes`_.
 
 .. _DPDK release notes:
-   https://doc.dpdk.org/guides-22.11/rel_notes/release_22_11.html
+   https://doc.dpdk.org/guides-23.11/rel_notes/release_23_11.html
 
 - Upper bound MTU: DPDK device drivers differ in how the L2 frame for a
   given MTU value is calculated e.g. i40e driver includes 2 x vlan headers in
diff --git a/Documentation/topics/dpdk/phy.rst b/Documentation/topics/dpdk/phy.rst
index 41cc3588ab..d94eafc9a9 100644
--- a/Documentation/topics/dpdk/phy.rst
+++ b/Documentation/topics/dpdk/phy.rst
@@ -117,7 +117,7 @@  tool::
 
 For more information, refer to the `DPDK drivers documentation`_.
 
-.. _DPDK drivers documentation: https://doc.dpdk.org/guides-22.11/linux_gsg/linux_drivers.html
+.. _DPDK drivers documentation: https://doc.dpdk.org/guides-23.11/linux_gsg/linux_drivers.html
 
 .. _dpdk-phy-multiqueue:
 
@@ -148,14 +148,14 @@  situation.
 Some physical NICs can be programmed to put these protocols in a dedicated
 hardware Rx queue using the rte_flow__ API.
 
-__ https://doc.dpdk.org/guides-22.11/prog_guide/rte_flow.html
+__ https://doc.dpdk.org/guides-23.11/prog_guide/rte_flow.html
 
 .. warning::
 
    This feature is not compatible with all NICs. Refer to the DPDK
    `compatibilty matrix`__ and vendor documentation for more details.
 
-   __ https://doc.dpdk.org/guides-22.11/nics/overview.html
+   __ https://doc.dpdk.org/guides-23.11/nics/overview.html
 
 Rx steering must be enabled for specific protocols per port. The
 ``rx-steering`` option takes one of the following values:
@@ -322,7 +322,7 @@  To hotplug a port with igb_uio in this case, DPDK must be configured to use
 physical addressing for IOVA mode. For more information regarding IOVA modes
 in DPDK please refer to the `DPDK IOVA Mode Detection`__.
 
-__ https://doc.dpdk.org/guides-22.11/prog_guide/env_abstraction_layer.html#iova-mode-detection
+__ https://doc.dpdk.org/guides-23.11/prog_guide/env_abstraction_layer.html#iova-mode-detection
 
 To configure OVS DPDK to use physical addressing for IOVA::
 
@@ -354,7 +354,7 @@  Representors are multi devices created on top of one PF.
 
 For more information, refer to the `DPDK documentation`__.
 
-__ https://doc.dpdk.org/guides-22.11/prog_guide/switch_representation.html#port-representors
+__ https://doc.dpdk.org/guides-23.11/prog_guide/switch_representation.html#port-representors
 
 Prior to port representors there was a one-to-one relationship between the PF
 and the eth device. With port representors the relationship becomes one PF to
@@ -488,7 +488,7 @@  in the ``options`` column of the ``Interface`` table.
    kernel netdevice, and be inherited from it when Open vSwitch is restarted,
    even if the options described in this section are unset from Open vSwitch.
 
-.. _bifurcated drivers: https://doc.dpdk.org/guides-22.11/linux_gsg/linux_drivers.html#bifurcated-driver
+.. _bifurcated drivers: https://doc.dpdk.org/guides-23.11/linux_gsg/linux_drivers.html#bifurcated-driver
 
 - Configure the VF MAC address::
 
diff --git a/Documentation/topics/dpdk/vdev.rst b/Documentation/topics/dpdk/vdev.rst
index 3383afce56..f1f59af5d9 100644
--- a/Documentation/topics/dpdk/vdev.rst
+++ b/Documentation/topics/dpdk/vdev.rst
@@ -63,4 +63,4 @@  run::
 More information on the different types of virtual DPDK PMDs can be found in
 the `DPDK documentation`__.
 
-__ https://doc.dpdk.org/guides-22.11/nics/overview.html
+__ https://doc.dpdk.org/guides-23.11/nics/overview.html
diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
index 3a5f5be988..e952a686b5 100644
--- a/Documentation/topics/dpdk/vhost-user.rst
+++ b/Documentation/topics/dpdk/vhost-user.rst
@@ -539,4 +539,4 @@  shown with::
 
 Further information can be found in the
 `DPDK documentation
-<https://doc.dpdk.org/guides-22.11/prog_guide/vhost_lib.html>`__
+<https://doc.dpdk.org/guides-23.11/prog_guide/vhost_lib.html>`__
diff --git a/Documentation/topics/testing.rst b/Documentation/topics/testing.rst
index fb9b3e77b1..c6093463d3 100644
--- a/Documentation/topics/testing.rst
+++ b/Documentation/topics/testing.rst
@@ -358,7 +358,7 @@  with a mlx5 device::
 All tests are skipped if no hugepages are configured. User must look into the DPDK
 manual to figure out how to `Configure hugepages`_.
 
-.. _Configure hugepages: https://doc.dpdk.org/guides-22.11/linux_gsg/sys_reqs.html
+.. _Configure hugepages: https://doc.dpdk.org/guides-23.11/linux_gsg/sys_reqs.html
 
 All the features documented under `Unit Tests`_ are available for the DPDK
 testsuite.
diff --git a/Documentation/topics/userspace-tso.rst b/Documentation/topics/userspace-tso.rst
index c4b15f2604..a21bb2b5de 100644
--- a/Documentation/topics/userspace-tso.rst
+++ b/Documentation/topics/userspace-tso.rst
@@ -46,7 +46,7 @@  datasheet for compatibility. Secondly, the NIC must have an associated DPDK
 Poll Mode Driver (PMD) which supports `TSO`. For a list of features per PMD,
 refer to the `DPDK documentation`__.
 
-__ https://doc.dpdk.org/guides-22.11/nics/overview.html
+__ https://doc.dpdk.org/guides-23.11/nics/overview.html
 
 Enabling TSO
 ~~~~~~~~~~~~
diff --git a/NEWS b/NEWS
index f6b4cbf997..ae883b5259 100644
--- a/NEWS
+++ b/NEWS
@@ -39,6 +39,15 @@  Post-v3.2.0
      * The userspace conntrack module no longer requires the user to specify
        connection helpers in all flow rules. Instead, the helper specified
        during connection commit will be used by default.
+   - DPDK:
+     * Add support for DPDK 23.11.
+
+Known issues:
+   - DPDK: v23.11 has a change in behavior in handling i40e VF devices. This
+     may block and prevent OVS from adding such devices as dpif-netdev ports in
+     a netdev datapath bridge.
+     For the details, see https://bugs.dpdk.org/show_bug.cgi?id=1337 which
+     describes the issue first detected in the 21.11 LTS branch.
 
 
 v3.2.0 - 17 Aug 2023
diff --git a/debian/control.in b/debian/control.in
index 64b0a4ce01..f9eea897ed 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -21,7 +21,7 @@  Build-Depends:
  iproute2,
  libcap-ng-dev,
  libdbus-1-dev [amd64 i386 ppc64el arm64],
-# DPDK_NETDEV  libdpdk-dev (>= 22.11) [amd64 i386 ppc64el arm64],
+# DPDK_NETDEV  libdpdk-dev (>= 23.11) [amd64 i386 ppc64el arm64],
  libnuma-dev [amd64 i386 ppc64el arm64],
  libpcap-dev [amd64 i386 ppc64el arm64],
  libssl-dev,
diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk
index e966371192..c1229870bb 100644
--- a/include/sparse/automake.mk
+++ b/include/sparse/automake.mk
@@ -4,6 +4,7 @@  noinst_HEADERS += \
         include/sparse/arpa/inet.h \
         include/sparse/bits/floatn.h \
         include/sparse/assert.h \
+        include/sparse/ia32intrin.h \
         include/sparse/math.h \
         include/sparse/numa.h \
         include/sparse/netinet/in.h \
diff --git a/include/sparse/ia32intrin.h b/include/sparse/ia32intrin.h
new file mode 100644
index 0000000000..5045bf38d9
--- /dev/null
+++ b/include/sparse/ia32intrin.h
@@ -0,0 +1,23 @@ 
+/* Copyright (c) 2023 Red Hat, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CHECKER__
+#error "Use this header only with sparse.  It is not a correct implementation."
+#endif
+
+#define __builtin_ia32_rdtsc() (unsigned long long) 0
+
+/* Get actual <ia32intrin.h> definitions for us to annotate and build on. */
+#include_next <ia32intrin.h>
diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
index 343a5716d1..5d24ebcda8 100644
--- a/rhel/openvswitch-fedora.spec.in
+++ b/rhel/openvswitch-fedora.spec.in
@@ -71,7 +71,7 @@  BuildRequires: libcap-ng libcap-ng-devel
 %endif
 %if %{with dpdk}
 BuildRequires: libpcap-devel numactl-devel
-BuildRequires: dpdk-devel >= 22.11
+BuildRequires: dpdk-devel >= 23.11
 Provides: %{name}-dpdk = %{version}-%{release}
 %endif
 %if %{with afxdp}
diff --git a/tests/system-dpdk-macros.at b/tests/system-dpdk-macros.at
index 3b5a3512d4..7cf9bac170 100644
--- a/tests/system-dpdk-macros.at
+++ b/tests/system-dpdk-macros.at
@@ -80,6 +80,7 @@  $1";/does not exist. The Open vSwitch kernel module is probably not loaded./d
 /does not support MTU configuration,/d
 /EAL: No \(available\|free\) .*hugepages reported/d
 /Failed to enable flow control/d
+/ice_vsi_config_outer_vlan_stripping(): Single VLAN mode (SVM) does not support qinq/d
 /Rx checksum offload is not supported on/d
 /TELEMETRY: No legacy callbacks, legacy socket not created/d"])
 ])