Skip to content

Commit fe55216

Browse files
author
dpdk-replace-leader
committed
replace: bump F-Stack embedded DPDK from 23.11.5 to 24.11.6 LTS (tree replace)
Pristine integration of upstream DPDK 24.11.6 LTS into f-stack/dpdk/. F-Stack local patches (29c7d58 + 5f3768c + 62f1c34 + 9271817) are NOT in this commit; they will be re-applied in the immediately-following 'port:' commit per plan.md §4.4 (single merged 'port:' commit per DP-A8). Patch list updated 3 -> 4 after user 2026-06-09 14:50 KNI feedback uncovered patch-scout's missed identification of 29c7d58. Versions: upstream: VERSION=24.11.6, ABI_VERSION=25.0 previous: VERSION=23.11.5, ABI_VERSION=24.0 lib/ count: 57 -> 59 (+argparse +ptr_compress, both opt-in, F-Stack 0 ref). Backed up old tree to f-stack/dpdk.bak-23.11.5/ (kept until M5 PASS). F-Stack patches saved as git format-patch under /data/workspace/dpdk-stable-24.11.6/f-stack-lib/patches/. Build verification (M2 acceptance): meson setup build: exit=0 / 749 build targets / 0 errors / 2 warnings (only missing optional PMD deps: mvep, af_xdp, etc.) ninja -C build: exit=0 / 0 errors / 0 warnings / 2m14s build (vs 23.11.5 baseline 4 warnings; cleaner) build size: 653 MB (vs 23.11.5 623 MB, +4.8% within NFR-D-3 ±30%) librte_eal.a: 875438 bytes (vs 835328, +4.8%) librte_ethdev.a: 874896 bytes (vs 825506, +6.0%) librte_argparse.a: 16624 bytes (NEW, F-Stack 0 ref - confirmed lean cost) KNI / igb_uio status verified absent in 24.11.6 upstream: ls dpdk/lib/kni -> No such file or directory ls dpdk/kernel/linux/kni -> No such file or directory ls dpdk/kernel/linux/igb_uio -> No such file or directory (Will be re-introduced (igb_uio) and kept absent (kni) by next 'port:' commit per spec 02 §3.6 + 04 §4.2.0/4.2.1) Local commit only; no push.
1 parent 72a255d commit fe55216

3,909 files changed

Lines changed: 548302 additions & 221465 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dpdk/.ci/linux-build.sh

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
#!/bin/sh -xe
2+
3+
if [ -z "${DEF_LIB:-}" ]; then
4+
DEF_LIB=static ABI_CHECKS= BUILD_DOCS= BUILD_EXAMPLES= RUN_TESTS= $0
5+
DEF_LIB=shared $0
6+
exit
7+
fi
8+
9+
# Builds are run as root in containers, no need for sudo
10+
[ "$(id -u)" != '0' ] || alias sudo=
11+
12+
install_libabigail() {
13+
version=$1
14+
instdir=$2
15+
tarball=$version.tar.xz
16+
17+
wget -q "http://mirrors.kernel.org/sourceware/libabigail/$tarball"
18+
tar -xf $tarball
19+
cd $version && autoreconf -vfi && cd -
20+
mkdir $version/build
21+
cd $version/build && ../configure --prefix=$instdir && cd -
22+
make -C $version/build all install
23+
rm -rf $version
24+
rm $tarball
25+
}
26+
27+
configure_coredump() {
28+
# No point in configuring coredump without gdb
29+
which gdb >/dev/null || return 0
30+
ulimit -c unlimited
31+
sudo sysctl -w kernel.core_pattern=/tmp/dpdk-core.%e.%p
32+
}
33+
34+
catch_coredump() {
35+
ls /tmp/dpdk-core.*.* 2>/dev/null || return 0
36+
for core in /tmp/dpdk-core.*.*; do
37+
binary=$(sudo readelf -n $core |grep $(pwd)/build/ 2>/dev/null |head -n1)
38+
[ -x $binary ] || binary=
39+
sudo gdb $binary -c $core \
40+
-ex 'info threads' \
41+
-ex 'thread apply all bt full' \
42+
-ex 'quit'
43+
done |tee -a build/gdb.log
44+
return 1
45+
}
46+
47+
cross_file=
48+
49+
if [ "$AARCH64" = "true" ]; then
50+
if [ "${CC%%clang}" != "$CC" ]; then
51+
cross_file=config/arm/arm64_armv8_linux_clang_ubuntu
52+
else
53+
cross_file=config/arm/arm64_armv8_linux_gcc
54+
fi
55+
fi
56+
57+
if [ "$MINGW" = "true" ]; then
58+
cross_file=config/x86/cross-mingw
59+
fi
60+
61+
if [ "$PPC64LE" = "true" ]; then
62+
cross_file=config/ppc/ppc64le-power8-linux-gcc-ubuntu
63+
fi
64+
65+
if [ "$RISCV64" = "true" ]; then
66+
cross_file=config/riscv/riscv64_linux_gcc
67+
fi
68+
69+
buildtype=debugoptimized
70+
71+
if [ "$BUILD_DEBUG" = "true" ]; then
72+
buildtype=debug
73+
fi
74+
75+
if [ "$BUILD_DOCS" = "true" ]; then
76+
OPTS="$OPTS -Denable_docs=true"
77+
fi
78+
79+
if [ "$BUILD_32BIT" = "true" ]; then
80+
OPTS="$OPTS -Dc_args=-m32 -Dc_link_args=-m32"
81+
OPTS="$OPTS -Dcpp_args=-m32 -Dcpp_link_args=-m32"
82+
export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig"
83+
fi
84+
85+
if [ "$MINGW" = "true" ]; then
86+
OPTS="$OPTS -Dexamples=helloworld"
87+
elif [ "$DEF_LIB" = "static" ]; then
88+
OPTS="$OPTS -Dexamples=l2fwd,l3fwd"
89+
else
90+
OPTS="$OPTS -Dexamples=all"
91+
fi
92+
93+
OPTS="$OPTS -Dplatform=generic"
94+
OPTS="$OPTS -Ddefault_library=$DEF_LIB"
95+
OPTS="$OPTS -Dbuildtype=$buildtype"
96+
if [ "$STDATOMIC" = "true" ]; then
97+
OPTS="$OPTS -Denable_stdatomic=true"
98+
else
99+
OPTS="$OPTS -Dcheck_includes=true"
100+
fi
101+
if [ "$MINI" = "true" ]; then
102+
OPTS="$OPTS -Denable_drivers=net/null"
103+
OPTS="$OPTS -Ddisable_libs=*"
104+
if [ "$DEF_LIB" = "static" ]; then
105+
OPTS="$OPTS -Dexamples=l2fwd"
106+
fi
107+
else
108+
OPTS="$OPTS -Denable_deprecated_libs=*"
109+
fi
110+
OPTS="$OPTS -Dlibdir=lib"
111+
112+
if [ "$ASAN" = "true" ]; then
113+
OPTS="$OPTS -Db_sanitize=address"
114+
if [ "${CC%%clang}" != "$CC" ]; then
115+
OPTS="$OPTS -Db_lundef=false"
116+
fi
117+
fi
118+
119+
OPTS="$OPTS -Dwerror=true"
120+
121+
if [ -d build ]; then
122+
meson configure build $OPTS
123+
else
124+
if [ -n "$cross_file" ]; then
125+
OPTS="$OPTS --cross-file $cross_file"
126+
fi
127+
meson setup build $OPTS
128+
fi
129+
ninja -C build
130+
131+
if [ -z "$cross_file" ]; then
132+
failed=
133+
configure_coredump
134+
devtools/test-null.sh || failed="true"
135+
catch_coredump
136+
[ "$failed" != "true" ]
137+
fi
138+
139+
if [ "$ABI_CHECKS" = "true" ]; then
140+
if [ "$(cat libabigail/VERSION 2>/dev/null)" != "$LIBABIGAIL_VERSION" ]; then
141+
rm -rf libabigail
142+
fi
143+
144+
if [ ! -d libabigail ]; then
145+
install_libabigail "$LIBABIGAIL_VERSION" $(pwd)/libabigail
146+
echo $LIBABIGAIL_VERSION > libabigail/VERSION
147+
fi
148+
149+
export PATH=$(pwd)/libabigail/bin:$PATH
150+
151+
if [ "$(cat reference/VERSION 2>/dev/null)" != "$REF_GIT_TAG" ]; then
152+
rm -rf reference
153+
fi
154+
155+
if [ ! -d reference ]; then
156+
refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG)
157+
git clone --single-branch -b "$REF_GIT_TAG" $REF_GIT_REPO $refsrcdir
158+
meson setup $OPTS -Dexamples= $refsrcdir $refsrcdir/build
159+
ninja -C $refsrcdir/build
160+
DESTDIR=$(pwd)/reference meson install -C $refsrcdir/build
161+
find reference/usr/local -name '*.a' -delete
162+
rm -rf reference/usr/local/bin
163+
rm -rf reference/usr/local/share
164+
echo $REF_GIT_TAG > reference/VERSION
165+
fi
166+
167+
DESTDIR=$(pwd)/install meson install -C build
168+
devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-}
169+
fi
170+
171+
if [ "$RUN_TESTS" = "true" ]; then
172+
failed=
173+
configure_coredump
174+
sudo meson test -C build --suite fast-tests -t 3 || failed="true"
175+
catch_coredump
176+
[ "$failed" != "true" ]
177+
fi
178+
179+
# Test examples compilation with an installed dpdk
180+
if [ "$BUILD_EXAMPLES" = "true" ]; then
181+
[ -d install ] || DESTDIR=$(pwd)/install meson install -C build
182+
export LD_LIBRARY_PATH=$(dirname $(find $(pwd)/install -name librte_eal.so)):$LD_LIBRARY_PATH
183+
export PATH=$(dirname $(find $(pwd)/install -name dpdk-devbind.py)):$PATH
184+
export PKG_CONFIG_PATH=$(dirname $(find $(pwd)/install -name libdpdk.pc)):$PKG_CONFIG_PATH
185+
export PKGCONF="pkg-config --define-prefix"
186+
find build/examples -maxdepth 1 -type f -name "dpdk-*" |
187+
while read target; do
188+
target=${target%%:*}
189+
target=${target#build/examples/dpdk-}
190+
if [ -e examples/$target/Makefile ]; then
191+
echo $target
192+
continue
193+
fi
194+
# Some examples binaries are built from an example sub
195+
# directory, discover the "top level" example name.
196+
find examples -name Makefile |
197+
sed -n "s,examples/\([^/]*\)\(/.*\|\)/$target/Makefile,\1,p"
198+
done | sort -u |
199+
while read example; do
200+
make -C install/usr/local/share/dpdk/examples/$example clean shared
201+
done
202+
fi

dpdk/.ci/linux-setup.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/sh -xe
2+
3+
# Builds are run as root in containers, no need for sudo
4+
[ "$(id -u)" != '0' ] || alias sudo=
5+
6+
# need to install as 'root' since some of the unit tests won't run without it
7+
sudo python3 -m pip install --upgrade 'meson==0.57.2'
8+
9+
# setup hugepages. error ignored because having hugepage is not mandatory.
10+
cat /proc/meminfo
11+
sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' || true
12+
cat /proc/meminfo

0 commit comments

Comments
 (0)