* [PATCH 1/7] test/timer_secondary: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:03 ` Burakov, Anatoly
2026-03-19 17:11 ` [PATCH 2/7] test/eal_flags: " Bruce Richardson
` (10 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
FreeBSD does not have multiprocess support, so skip the secondary timer
autotest.
Bugzilla ID: 761 (partial fix)
Fixes: 50247fe03fe0 ("test/timer: exercise new APIs in secondary process")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_timer_secondary.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c
index 57ab39130d..529774f4d0 100644
--- a/app/test/test_timer_secondary.c
+++ b/app/test/test_timer_secondary.c
@@ -18,11 +18,11 @@
#include "test.h"
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_timer_secondary(void)
{
- printf("timer_secondary not supported on Windows, skipping test\n");
+ printf("timer_secondary only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 1/7] test/timer_secondary: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 1/7] test/timer_secondary: skip test " Bruce Richardson
@ 2026-03-20 14:03 ` Burakov, Anatoly
0 siblings, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:03 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> FreeBSD does not have multiprocess support, so skip the secondary timer
> autotest.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 50247fe03fe0 ("test/timer: exercise new APIs in secondary process")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 2/7] test/eal_flags: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
2026-03-19 17:11 ` [PATCH 1/7] test/timer_secondary: skip test " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:02 ` Burakov, Anatoly
2026-03-19 17:11 ` [PATCH 3/7] test/pdump: " Bruce Richardson
` (9 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
EAL flags tests depend on running secondary or multiple DPDK instances
so will not work on FreeBSD. Report these as SKIPPED tests on that
OS.
Bugzilla ID: 761 (partial fix)
Fixes: 764bf26873b9 ("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_eal_flags.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index b3a8d0ae6f..12280e7a39 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -10,88 +10,88 @@
#include <string.h>
#include <stdarg.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_missing_c_flag(void)
{
- printf("missing_c_flag not supported on Windows, skipping test\n");
+ printf("missing_c_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_main_lcore_flag(void)
{
- printf("main_lcore_flag not supported on Windows, skipping test\n");
+ printf("main_lcore_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_n_flag(void)
{
- printf("invalid_n_flag not supported on Windows, skipping test\n");
+ printf("invalid_n_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_hpet_flag(void)
{
- printf("no_hpet_flag not supported on Windows, skipping test\n");
+ printf("no_hpet_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_huge_flag(void)
{
- printf("no_huge_flag not supported on Windows, skipping test\n");
+ printf("no_huge_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_allow_flag(void)
{
- printf("allow_flag not supported on Windows, skipping test\n");
+ printf("allow_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_b_flag(void)
{
- printf("invalid_b_flag not supported on Windows, skipping test\n");
+ printf("invalid_b_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_vdev_flag(void)
{
- printf("invalid_vdev_flag not supported on Windows, skipping test\n");
+ printf("invalid_vdev_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_r_flag(void)
{
- printf("invalid_r_flag not supported on Windows, skipping test\n");
+ printf("invalid_r_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_memory_flags(void)
{
- printf("memory_flags not supported on Windows, skipping test\n");
+ printf("memory_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_file_prefix(void)
{
- printf("file_prefix not supported on Windows, skipping test\n");
+ printf("file_prefix only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_misc_flags(void)
{
- printf("misc_flags not supported on Windows, skipping test\n");
+ printf("misc_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 2/7] test/eal_flags: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 2/7] test/eal_flags: " Bruce Richardson
@ 2026-03-20 14:02 ` Burakov, Anatoly
0 siblings, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:02 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> EAL flags tests depend on running secondary or multiple DPDK instances
> so will not work on FreeBSD. Report these as SKIPPED tests on that
> OS.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 764bf26873b9 ("add FreeBSD support")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 3/7] test/pdump: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
2026-03-19 17:11 ` [PATCH 1/7] test/timer_secondary: skip test " Bruce Richardson
2026-03-19 17:11 ` [PATCH 2/7] test/eal_flags: " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-19 17:16 ` Bruce Richardson
2026-03-19 17:11 ` [PATCH 4/7] test/secondary_process: " Bruce Richardson
` (8 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
FreeBSD doesn't support multiprocess so skip the pdump unit test which
requires multi-process support.
Bugzilla ID: 761 (partial fix)
Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_pdump.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
index 824caef2d4..9d1175b4b0 100644
--- a/app/test/test_pdump.c
+++ b/app/test/test_pdump.c
@@ -5,6 +5,7 @@
#include <unistd.h>
#include <stdint.h>
#include <limits.h>
+#include <sys/utsname.h>
#include <ethdev_driver.h>
#include <rte_pdump.h>
@@ -197,7 +198,12 @@ run_pdump_server_tests(void)
int
test_pdump(void)
{
+ struct utsname name;
int ret = 0;
+
+ if (uname(&name) < 0 || strcmp(name.sysname, "FreeBSD") == 0)
+ return TEST_SKIPPED;
+
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
printf("IN PRIMARY PROCESS\n");
ret = run_pdump_server_tests();
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 3/7] test/pdump: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 3/7] test/pdump: " Bruce Richardson
@ 2026-03-19 17:16 ` Bruce Richardson
2026-03-21 16:14 ` Stephen Hemminger
0 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:16 UTC (permalink / raw)
To: dev; +Cc: probb, david.marchand, stable
On Thu, Mar 19, 2026 at 05:11:37PM +0000, Bruce Richardson wrote:
> FreeBSD doesn't support multiprocess so skip the pdump unit test which
> requires multi-process support.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/test_pdump.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
> index 824caef2d4..9d1175b4b0 100644
> --- a/app/test/test_pdump.c
> +++ b/app/test/test_pdump.c
> @@ -5,6 +5,7 @@
> #include <unistd.h>
> #include <stdint.h>
> #include <limits.h>
> +#include <sys/utsname.h>
>
> #include <ethdev_driver.h>
> #include <rte_pdump.h>
> @@ -197,7 +198,12 @@ run_pdump_server_tests(void)
> int
> test_pdump(void)
> {
> + struct utsname name;
> int ret = 0;
> +
> + if (uname(&name) < 0 || strcmp(name.sysname, "FreeBSD") == 0)
> + return TEST_SKIPPED;
> +
Self-NAK, I forgot to update this patch to just use
"RTE_EXEC_ENV_IS_FREEBSD" instead of calling "uname". Will fix in V2.
> if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
> printf("IN PRIMARY PROCESS\n");
> ret = run_pdump_server_tests();
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 3/7] test/pdump: skip test on FreeBSD
2026-03-19 17:16 ` Bruce Richardson
@ 2026-03-21 16:14 ` Stephen Hemminger
2026-03-23 9:07 ` Bruce Richardson
0 siblings, 1 reply; 33+ messages in thread
From: Stephen Hemminger @ 2026-03-21 16:14 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, probb, david.marchand, stable
On Thu, 19 Mar 2026 17:16:27 +0000
Bruce Richardson <bruce.richardson@intel.com> wrote:
> On Thu, Mar 19, 2026 at 05:11:37PM +0000, Bruce Richardson wrote:
> > FreeBSD doesn't support multiprocess so skip the pdump unit test which
> > requires multi-process support.
> >
> > Bugzilla ID: 761 (partial fix)
> > Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> > ---
> > app/test/test_pdump.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
> > index 824caef2d4..9d1175b4b0 100644
> > --- a/app/test/test_pdump.c
> > +++ b/app/test/test_pdump.c
> > @@ -5,6 +5,7 @@
> > #include <unistd.h>
> > #include <stdint.h>
> > #include <limits.h>
> > +#include <sys/utsname.h>
> >
> > #include <ethdev_driver.h>
> > #include <rte_pdump.h>
> > @@ -197,7 +198,12 @@ run_pdump_server_tests(void)
> > int
> > test_pdump(void)
> > {
> > + struct utsname name;
> > int ret = 0;
> > +
> > + if (uname(&name) < 0 || strcmp(name.sysname, "FreeBSD") == 0)
> > + return TEST_SKIPPED;
> > +
>
> Self-NAK, I forgot to update this patch to just use
> "RTE_EXEC_ENV_IS_FREEBSD" instead of calling "uname". Will fix in V2.
>
> > if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
> > printf("IN PRIMARY PROCESS\n");
> > ret = run_pdump_server_tests();
> > --
> > 2.51.0
> >
Couldn't there be a common dependency in meson.build
would rather not build tests for platforms that are missing the
secondary_process support.
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 3/7] test/pdump: skip test on FreeBSD
2026-03-21 16:14 ` Stephen Hemminger
@ 2026-03-23 9:07 ` Bruce Richardson
0 siblings, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-23 9:07 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev, probb, david.marchand, stable
On Sat, Mar 21, 2026 at 09:14:18AM -0700, Stephen Hemminger wrote:
> On Thu, 19 Mar 2026 17:16:27 +0000
> Bruce Richardson <bruce.richardson@intel.com> wrote:
>
> > On Thu, Mar 19, 2026 at 05:11:37PM +0000, Bruce Richardson wrote:
> > > FreeBSD doesn't support multiprocess so skip the pdump unit test which
> > > requires multi-process support.
> > >
> > > Bugzilla ID: 761 (partial fix)
> > > Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> > > ---
> > > app/test/test_pdump.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
> > > index 824caef2d4..9d1175b4b0 100644
> > > --- a/app/test/test_pdump.c
> > > +++ b/app/test/test_pdump.c
> > > @@ -5,6 +5,7 @@
> > > #include <unistd.h>
> > > #include <stdint.h>
> > > #include <limits.h>
> > > +#include <sys/utsname.h>
> > >
> > > #include <ethdev_driver.h>
> > > #include <rte_pdump.h>
> > > @@ -197,7 +198,12 @@ run_pdump_server_tests(void)
> > > int
> > > test_pdump(void)
> > > {
> > > + struct utsname name;
> > > int ret = 0;
> > > +
> > > + if (uname(&name) < 0 || strcmp(name.sysname, "FreeBSD") == 0)
> > > + return TEST_SKIPPED;
> > > +
> >
> > Self-NAK, I forgot to update this patch to just use
> > "RTE_EXEC_ENV_IS_FREEBSD" instead of calling "uname". Will fix in V2.
> >
> > > if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
> > > printf("IN PRIMARY PROCESS\n");
> > > ret = run_pdump_server_tests();
> > > --
> > > 2.51.0
> > >
>
> Couldn't there be a common dependency in meson.build
> would rather not build tests for platforms that are missing the
> secondary_process support.
We probably could engineer something like that, but I actually prefer to
keep them as skipped for two reasons:
1. it makes us aware of what tests are not supported rather than having
them just silently dropped.
2. for cases like this where we do a runtime check, we at least guarantee
that the tests build for the platform
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 4/7] test/secondary_process: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (2 preceding siblings ...)
2026-03-19 17:11 ` [PATCH 3/7] test/pdump: " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:02 ` Burakov, Anatoly
2026-03-19 17:11 ` [PATCH 5/7] test/external_memory: " Bruce Richardson
` (7 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
Since there is no secondary process support on FreeBSD skip the unit
tests for that feature.
Bugzilla ID: 761 (partial fix)
Fixes: 764bf26873b9 ("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_mp_secondary.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c
index 218eacb3bf..93fcfd735b 100644
--- a/app/test/test_mp_secondary.c
+++ b/app/test/test_mp_secondary.c
@@ -15,11 +15,11 @@
#include <string.h>
#include <unistd.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_mp_secondary(void)
{
- printf("mp_secondary not supported on Windows, skipping test\n");
+ printf("Multiprocess support on present on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 4/7] test/secondary_process: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 4/7] test/secondary_process: " Bruce Richardson
@ 2026-03-20 14:02 ` Burakov, Anatoly
0 siblings, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:02 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> Since there is no secondary process support on FreeBSD skip the unit
> tests for that feature.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 764bf26873b9 ("add FreeBSD support")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/test_mp_secondary.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c
> index 218eacb3bf..93fcfd735b 100644
> --- a/app/test/test_mp_secondary.c
> +++ b/app/test/test_mp_secondary.c
> @@ -15,11 +15,11 @@
> #include <string.h>
> #include <unistd.h>
>
> -#ifdef RTE_EXEC_ENV_WINDOWS
> +#ifndef RTE_EXEC_ENV_LINUX
> int
> test_mp_secondary(void)
> {
> - printf("mp_secondary not supported on Windows, skipping test\n");
> + printf("Multiprocess support on present on Linux, skipping test\n");
> return TEST_SKIPPED;
> }
> #else
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 5/7] test/external_memory: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (3 preceding siblings ...)
2026-03-19 17:11 ` [PATCH 4/7] test/secondary_process: " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:01 ` Burakov, Anatoly
2026-03-19 17:11 ` [PATCH 6/7] test/interrupts: " Bruce Richardson
` (6 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
FreeBSD doesn't support external memory, so skip the test.
Bugzilla ID: 761 (partial fix)
Fixes: b270daa43b3d ("test: support external memory")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_external_mem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c
index 1c977b749b..53300983ed 100644
--- a/app/test/test_external_mem.c
+++ b/app/test/test_external_mem.c
@@ -10,11 +10,11 @@
#include <string.h>
#include <fcntl.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_external_mem(void)
{
- printf("external_mem not supported on Windows, skipping test\n");
+ printf("external_mem only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 5/7] test/external_memory: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 5/7] test/external_memory: " Bruce Richardson
@ 2026-03-20 14:01 ` Burakov, Anatoly
0 siblings, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:01 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> FreeBSD doesn't support external memory, so skip the test.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: b270daa43b3d ("test: support external memory")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/test_external_mem.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c
> index 1c977b749b..53300983ed 100644
> --- a/app/test/test_external_mem.c
> +++ b/app/test/test_external_mem.c
> @@ -10,11 +10,11 @@
> #include <string.h>
> #include <fcntl.h>
>
> -#ifdef RTE_EXEC_ENV_WINDOWS
> +#ifndef RTE_EXEC_ENV_LINUX
> static int
> test_external_mem(void)
> {
> - printf("external_mem not supported on Windows, skipping test\n");
> + printf("external_mem only supported on Linux, skipping test\n");
> return TEST_SKIPPED;
> }
>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 6/7] test/interrupts: skip test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (4 preceding siblings ...)
2026-03-19 17:11 ` [PATCH 5/7] test/external_memory: " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:01 ` Burakov, Anatoly
2026-03-19 17:11 ` [PATCH 7/7] test/debug: fix unit " Bruce Richardson
` (5 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
FreeBSD does not have interrupt support for DPDK, so skip the test
associated with that functionality.
Bugzilla ID: 761 (partial fix)
Fixes: 764bf26873b9 ("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_interrupts.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
index 2eb876e65a..3a5be92cd7 100644
--- a/app/test/test_interrupts.c
+++ b/app/test/test_interrupts.c
@@ -429,7 +429,7 @@ test_interrupt(void)
int ret = -1;
struct rte_intr_handle *test_intr_handle;
- if (RTE_EXEC_ENV_IS_WINDOWS)
+ if (RTE_EXEC_ENV_IS_WINDOWS || RTE_EXEC_ENV_IS_FREEBSD)
return TEST_SKIPPED;
if (test_interrupt_init() < 0) {
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 6/7] test/interrupts: skip test on FreeBSD
2026-03-19 17:11 ` [PATCH 6/7] test/interrupts: " Bruce Richardson
@ 2026-03-20 14:01 ` Burakov, Anatoly
0 siblings, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:01 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> FreeBSD does not have interrupt support for DPDK, so skip the test
> associated with that functionality.
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 764bf26873b9 ("add FreeBSD support")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/test_interrupts.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
> index 2eb876e65a..3a5be92cd7 100644
> --- a/app/test/test_interrupts.c
> +++ b/app/test/test_interrupts.c
> @@ -429,7 +429,7 @@ test_interrupt(void)
> int ret = -1;
> struct rte_intr_handle *test_intr_handle;
>
> - if (RTE_EXEC_ENV_IS_WINDOWS)
> + if (RTE_EXEC_ENV_IS_WINDOWS || RTE_EXEC_ENV_IS_FREEBSD)
> return TEST_SKIPPED;
>
> if (test_interrupt_init() < 0) {
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 7/7] test/debug: fix unit test on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (5 preceding siblings ...)
2026-03-19 17:11 ` [PATCH 6/7] test/interrupts: " Bruce Richardson
@ 2026-03-19 17:11 ` Bruce Richardson
2026-03-20 14:00 ` Burakov, Anatoly
2026-03-20 14:02 ` David Marchand
2026-03-19 20:15 ` [PATCH 0/7] Get fast-test suite to run " Patrick Robb
` (4 subsequent siblings)
11 siblings, 2 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-19 17:11 UTC (permalink / raw)
To: dev; +Cc: lylavoie, probb, david.marchand, Bruce Richardson, stable
Fix the test_debug unit test on FreeBSD by:
* passing no-telemetry to the additional process calls
* ensuring that we always use the no-huge and no-shconf params
* removing the dependency on procfs to get the exe and using argv[0]
instead
Bugzilla ID: 761 (partial fix)
Fixes: 764bf26873b9 ("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/process.h | 11 ++++++++---
app/test/test_debug.c | 6 +++---
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/app/test/process.h b/app/test/process.h
index df43966a2a..46b69ce330 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -96,7 +96,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
int driver_path_num;
int argv_num;
int i, status;
- char path[32];
+ char *path;
#ifdef RTE_LIB_PDUMP
#ifdef RTE_NET_RING
rte_thread_t thread;
@@ -188,8 +188,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
/* set the environment variable */
if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
rte_panic("Cannot export environment variable\n");
-
- strlcpy(path, "/proc/" self "/" exe, sizeof(path));
+#ifdef RTE_EXEC_ENV_LINUX
+ char path_buf[32];
+ strlcpy(path_buf, "/proc/" self "/" exe, sizeof(path_buf));
+ path = path_buf;
+#else
+ path = argv_cpy[0];
+#endif
if (execv(path, argv_cpy) < 0) {
if (errno == ENOENT) {
printf("Could not find '%s', is procfs mounted?\n",
diff --git a/app/test/test_debug.c b/app/test/test_debug.c
index bfda4d1aa3..eda9c3e0e1 100644
--- a/app/test/test_debug.c
+++ b/app/test/test_debug.c
@@ -154,15 +154,15 @@ test_debug(void)
test_args[2] = "-l";
test_args[3] = core;
- if (rte_eal_has_hugepages()) {
+ if (rte_eal_has_hugepages() && RTE_EXEC_ENV_IS_LINUX) {
test_args[4] = "";
test_args[5] = "";
test_args[6] = "";
test_args[7] = "";
} else {
test_args[4] = "--no-huge";
- test_args[5] = "-m";
- test_args[6] = "2048";
+ test_args[5] = "-m2048";
+ test_args[6] = "--no-telemetry";
#ifdef RTE_ARCH_PPC_64
/* iova=pa is the default, but fails on ppc64 with --no-huge */
test_args[7] = "--iova-mode=va";
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 7/7] test/debug: fix unit test on FreeBSD
2026-03-19 17:11 ` [PATCH 7/7] test/debug: fix unit " Bruce Richardson
@ 2026-03-20 14:00 ` Burakov, Anatoly
2026-03-20 14:02 ` David Marchand
1 sibling, 0 replies; 33+ messages in thread
From: Burakov, Anatoly @ 2026-03-20 14:00 UTC (permalink / raw)
To: Bruce Richardson, dev; +Cc: lylavoie, probb, david.marchand, stable
On 3/19/2026 6:11 PM, Bruce Richardson wrote:
> Fix the test_debug unit test on FreeBSD by:
> * passing no-telemetry to the additional process calls
> * ensuring that we always use the no-huge and no-shconf params
> * removing the dependency on procfs to get the exe and using argv[0]
> instead
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 764bf26873b9 ("add FreeBSD support")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/process.h | 11 ++++++++---
> app/test/test_debug.c | 6 +++---
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/app/test/process.h b/app/test/process.h
> index df43966a2a..46b69ce330 100644
> --- a/app/test/process.h
> +++ b/app/test/process.h
> @@ -96,7 +96,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> int driver_path_num;
> int argv_num;
> int i, status;
> - char path[32];
> + char *path;
> #ifdef RTE_LIB_PDUMP
> #ifdef RTE_NET_RING
> rte_thread_t thread;
> @@ -188,8 +188,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> /* set the environment variable */
> if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
> rte_panic("Cannot export environment variable\n");
> -
> - strlcpy(path, "/proc/" self "/" exe, sizeof(path));
> +#ifdef RTE_EXEC_ENV_LINUX
> + char path_buf[32];
> + strlcpy(path_buf, "/proc/" self "/" exe, sizeof(path_buf));
> + path = path_buf;
> +#else
> + path = argv_cpy[0];
Why can't we just use argv_cpy everywhere?
Otherwise,
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 7/7] test/debug: fix unit test on FreeBSD
2026-03-19 17:11 ` [PATCH 7/7] test/debug: fix unit " Bruce Richardson
2026-03-20 14:00 ` Burakov, Anatoly
@ 2026-03-20 14:02 ` David Marchand
2026-03-20 14:18 ` Bruce Richardson
1 sibling, 1 reply; 33+ messages in thread
From: David Marchand @ 2026-03-20 14:02 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, lylavoie, probb, stable
On Thu, 19 Mar 2026 at 18:14, Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> Fix the test_debug unit test on FreeBSD by:
> * passing no-telemetry to the additional process calls
> * ensuring that we always use the no-huge and no-shconf params
> * removing the dependency on procfs to get the exe and using argv[0]
> instead
>
> Bugzilla ID: 761 (partial fix)
> Fixes: 764bf26873b9 ("add FreeBSD support")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> app/test/process.h | 11 ++++++++---
> app/test/test_debug.c | 6 +++---
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/app/test/process.h b/app/test/process.h
> index df43966a2a..46b69ce330 100644
> --- a/app/test/process.h
> +++ b/app/test/process.h
> @@ -96,7 +96,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> int driver_path_num;
> int argv_num;
> int i, status;
> - char path[32];
> + char *path;
> #ifdef RTE_LIB_PDUMP
> #ifdef RTE_NET_RING
> rte_thread_t thread;
> @@ -188,8 +188,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> /* set the environment variable */
> if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
> rte_panic("Cannot export environment variable\n");
> -
> - strlcpy(path, "/proc/" self "/" exe, sizeof(path));
> +#ifdef RTE_EXEC_ENV_LINUX
> + char path_buf[32];
> + strlcpy(path_buf, "/proc/" self "/" exe, sizeof(path_buf));
> + path = path_buf;
> +#else
> + path = argv_cpy[0];
> +#endif
You can remove the self and exe macros that makes no sense anymore
(the only left users are Linux only).
> if (execv(path, argv_cpy) < 0) {
IIRC, all callers pass an array with args[0] == prgname == original
argv[0] from main.
To convince myself, I ran unit tests in GHA with a dumb change:
diff --git a/app/test/process.h b/app/test/process.h
index df43966a2a..c9205992d2 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -104,6 +104,9 @@ process_dup(const char *const argv[], int numargs,
const char *env_value)
#endif
#endif
+ if (argv[0] != prgname)
+ return -1;
+
pid_t pid = fork();
if (pid < 0)
return -1;
So it seems that we can remove this whole exe path discovery and just
pass argv_cpy[0].
> if (errno == ENOENT) {
> printf("Could not find '%s', is procfs mounted?\n",
Mention of procfs makes no sense for FreeBSD.
> diff --git a/app/test/test_debug.c b/app/test/test_debug.c
> index bfda4d1aa3..eda9c3e0e1 100644
> --- a/app/test/test_debug.c
> +++ b/app/test/test_debug.c
> @@ -154,15 +154,15 @@ test_debug(void)
> test_args[2] = "-l";
> test_args[3] = core;
>
> - if (rte_eal_has_hugepages()) {
> + if (rte_eal_has_hugepages() && RTE_EXEC_ENV_IS_LINUX) {
I miss the reason.
Why can't we run with hugepages on FreeBSD?
> test_args[4] = "";
> test_args[5] = "";
> test_args[6] = "";
> test_args[7] = "";
> } else {
> test_args[4] = "--no-huge";
> - test_args[5] = "-m";
> - test_args[6] = "2048";
> + test_args[5] = "-m2048";
> + test_args[6] = "--no-telemetry";
> #ifdef RTE_ARCH_PPC_64
> /* iova=pa is the default, but fails on ppc64 with --no-huge */
> test_args[7] = "--iova-mode=va";
> --
> 2.51.0
>
--
David Marchand
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH 7/7] test/debug: fix unit test on FreeBSD
2026-03-20 14:02 ` David Marchand
@ 2026-03-20 14:18 ` Bruce Richardson
0 siblings, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 14:18 UTC (permalink / raw)
To: David Marchand; +Cc: dev, lylavoie, probb, stable
On Fri, Mar 20, 2026 at 03:02:54PM +0100, David Marchand wrote:
> On Thu, 19 Mar 2026 at 18:14, Bruce Richardson
> <bruce.richardson@intel.com> wrote:
> >
> > Fix the test_debug unit test on FreeBSD by:
> > * passing no-telemetry to the additional process calls
> > * ensuring that we always use the no-huge and no-shconf params
> > * removing the dependency on procfs to get the exe and using argv[0]
> > instead
> >
> > Bugzilla ID: 761 (partial fix)
> > Fixes: 764bf26873b9 ("add FreeBSD support")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> > ---
> > app/test/process.h | 11 ++++++++---
> > app/test/test_debug.c | 6 +++---
> > 2 files changed, 11 insertions(+), 6 deletions(-)
> >
> > diff --git a/app/test/process.h b/app/test/process.h
> > index df43966a2a..46b69ce330 100644
> > --- a/app/test/process.h
> > +++ b/app/test/process.h
> > @@ -96,7 +96,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> > int driver_path_num;
> > int argv_num;
> > int i, status;
> > - char path[32];
> > + char *path;
> > #ifdef RTE_LIB_PDUMP
> > #ifdef RTE_NET_RING
> > rte_thread_t thread;
> > @@ -188,8 +188,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
> > /* set the environment variable */
> > if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
> > rte_panic("Cannot export environment variable\n");
> > -
> > - strlcpy(path, "/proc/" self "/" exe, sizeof(path));
> > +#ifdef RTE_EXEC_ENV_LINUX
> > + char path_buf[32];
> > + strlcpy(path_buf, "/proc/" self "/" exe, sizeof(path_buf));
> > + path = path_buf;
> > +#else
> > + path = argv_cpy[0];
> > +#endif
>
> You can remove the self and exe macros that makes no sense anymore
> (the only left users are Linux only).
>
>
> > if (execv(path, argv_cpy) < 0) {
>
> IIRC, all callers pass an array with args[0] == prgname == original
> argv[0] from main.
>
> To convince myself, I ran unit tests in GHA with a dumb change:
> diff --git a/app/test/process.h b/app/test/process.h
> index df43966a2a..c9205992d2 100644
> --- a/app/test/process.h
> +++ b/app/test/process.h
> @@ -104,6 +104,9 @@ process_dup(const char *const argv[], int numargs,
> const char *env_value)
> #endif
> #endif
>
> + if (argv[0] != prgname)
> + return -1;
> +
> pid_t pid = fork();
> if (pid < 0)
> return -1;
>
> So it seems that we can remove this whole exe path discovery and just
> pass argv_cpy[0].
>
>
> > if (errno == ENOENT) {
> > printf("Could not find '%s', is procfs mounted?\n",
>
> Mention of procfs makes no sense for FreeBSD.
>
>
> > diff --git a/app/test/test_debug.c b/app/test/test_debug.c
> > index bfda4d1aa3..eda9c3e0e1 100644
> > --- a/app/test/test_debug.c
> > +++ b/app/test/test_debug.c
> > @@ -154,15 +154,15 @@ test_debug(void)
> > test_args[2] = "-l";
> > test_args[3] = core;
> >
> > - if (rte_eal_has_hugepages()) {
> > + if (rte_eal_has_hugepages() && RTE_EXEC_ENV_IS_LINUX) {
>
> I miss the reason.
> Why can't we run with hugepages on FreeBSD?
>
Because only one process can use them right now, so spawning a second will
fail. It's a major limitation we need to fix...
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 0/7] Get fast-test suite to run on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (6 preceding siblings ...)
2026-03-19 17:11 ` [PATCH 7/7] test/debug: fix unit " Bruce Richardson
@ 2026-03-19 20:15 ` Patrick Robb
2026-03-19 20:44 ` Patrick Robb
` (3 subsequent siblings)
11 siblings, 0 replies; 33+ messages in thread
From: Patrick Robb @ 2026-03-19 20:15 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, lylavoie, david.marchand, Matthew Labrecque
[-- Attachment #1: Type: text/plain, Size: 1830 bytes --]
Thanks Bruce. We will apply the series and try a fast tests run on our
freebsd14 VM. And if all goes well provide a tested by tag and wait for
this to hit mainline so unit tests in CI can turn back on. :)
On Thu, Mar 19, 2026 at 1:13 PM Bruce Richardson <bruce.richardson@intel.com>
wrote:
> Bugzilla ID: 761
>
> The standard "fast-tests" suite is used to sanity-check large parts
> of the DPDK codebase, but it failed to run successfully on FreeBSD,
> with large numbers of failures. This is a long-standing issue reported
> in Bugzilla back in 2021 (hence the 3-digit BZ ID)
>
> This set attempts to rectify this situation by allowing the suite
> to run without errors. Mostly it does this by disabling test suites
> that rely on features like multi-process which are unsupported on
> FreeBSD. It also fixes the test_debug suite which should run on
> BSD but was failing.
>
> After this set, a run on my FreeBSD system passes with zero failures
> and 22 tests reported as skipped.
>
> Bruce Richardson (7):
> test/timer_secondary: skip test on FreeBSD
> test/eal_flags: skip test on FreeBSD
> test/pdump: skip test on FreeBSD
> test/secondary_process: skip test on FreeBSD
> test/external_memory: skip test on FreeBSD
> test/interrupts: skip test on FreeBSD
> test/debug: fix unit test on FreeBSD
>
> app/test/process.h | 11 ++++++++---
> app/test/test_debug.c | 6 +++---
> app/test/test_eal_flags.c | 26 +++++++++++++-------------
> app/test/test_external_mem.c | 4 ++--
> app/test/test_interrupts.c | 2 +-
> app/test/test_mp_secondary.c | 4 ++--
> app/test/test_pdump.c | 6 ++++++
> app/test/test_timer_secondary.c | 4 ++--
> 8 files changed, 37 insertions(+), 26 deletions(-)
>
> --
> 2.51.0
>
>
[-- Attachment #2: Type: text/html, Size: 2274 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 0/7] Get fast-test suite to run on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (7 preceding siblings ...)
2026-03-19 20:15 ` [PATCH 0/7] Get fast-test suite to run " Patrick Robb
@ 2026-03-19 20:44 ` Patrick Robb
2026-03-20 8:33 ` Bruce Richardson
2026-03-20 14:25 ` David Marchand
` (2 subsequent siblings)
11 siblings, 1 reply; 33+ messages in thread
From: Patrick Robb @ 2026-03-19 20:44 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, lylavoie, david.marchand
[-- Attachment #1: Type: text/plain, Size: 5081 bytes --]
Tested-by: Patrick Robb <probb@iol.unh.edu>
Okay, applied the patchseries and did a run on FreeBSD 14. Looks like the
suites are passing but a timeout exception is raised (on the test framework
execution, not on a testcase itself).
100/137 DPDK:fast-tests / pflock_autotest
OK 0.58s
101/137 DPDK:fast-tests / pie_autotest
OK 0.08s
102/137 DPDK:fast-tests / ring_pmd_autotest
OK 0.05s
103/137 DPDK:fast-tests / prefetch_autotest
OK 0.05s
104/137 DPDK:fast-tests / ptr_compress_autotest
OK 0.17s
105/137 DPDK:fast-tests / rawdev_autotest
OK 0.05s
106/137 DPDK:fast-tests / rcu_qsbr_autotest
OK 0.45s
107/137 DPDK:fast-tests / reorder_autotest
OK 0.25s
Exception in callback TestHarness._run_tests.<locals>.test_done(<Task
finishe...explicitly.')>) at
/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py:1837
handle: <Handle TestHarness._run_tests.<locals>.test_done(<Task
finishe...explicitly.')>) at
/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py:1837>
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1268, in wait
await complete_all(self.all_futures, timeout=timeout)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1180, in complete_all
check_futures(futures)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1168, in check_futures
raise asyncio.TimeoutError
TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/asyncio/events.py", line 84, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1839, in test_done
f.result()
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1834, in run_test
res = await test.run(self)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1376, in run
await self._run_cmd(harness, cmd)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1442, in _run_cmd
returncode, result, additional_error = await p.wait(self.runobj.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1270, in wait
additional_error = await self._kill()
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1231, in _kill
await try_wait_one(p.wait(), timeout=0.5)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1133, in try_wait_one
await asyncio.wait(awaitables,
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 425, in wait
raise TypeError("Passing coroutines is forbidden, use tasks
explicitly.")
TypeError: Passing coroutines is forbidden, use tasks explicitly.
/usr/local/lib/python3.11/asyncio/events.py:84: RuntimeWarning: coroutine
'Process.wait' was never awaited
self._context.run(self._callback, *self._args)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Ok: 87
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 20
Timeout: 0
Full log written to /tmp/dpdk/build2/meson-logs/testlog.txt
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1268, in wait
await complete_all(self.all_futures, timeout=timeout)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1180, in complete_all
check_futures(futures)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1168, in check_futures
raise asyncio.TimeoutError
TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mesonmain.py",
line 132, in run
return options.run_func(options)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1989, in run
return th.doit()
^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1672, in doit
self.run_tests(runners)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1811, in run_tests
loop.run_until_complete(self._run_tests(runners))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 654, in
run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1901, in _run_tests
await complete(future)
File "/usr/local/lib/python3.11/site-packages/mesonbuild/mtest.py", line
1147, in complete
await future
TypeError: Passing coroutines is forbidden, use tasks explicitly.
root@dpdk-freebsd14:/tmp/dpdk/build2 # echo $?
2
[-- Attachment #2: Type: text/html, Size: 6366 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 0/7] Get fast-test suite to run on FreeBSD
2026-03-19 20:44 ` Patrick Robb
@ 2026-03-20 8:33 ` Bruce Richardson
0 siblings, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 8:33 UTC (permalink / raw)
To: Patrick Robb; +Cc: dev, lylavoie, david.marchand
On Thu, Mar 19, 2026 at 04:44:04PM -0400, Patrick Robb wrote:
> Tested-by: Patrick Robb <[1]probb@iol.unh.edu>
> Okay, applied the patchseries and did a run on FreeBSD 14. Looks like
> the suites are passing but a timeout exception is raised (on the test
> framework execution, not on a testcase itself).
Was this with the base version of meson? Maybe try using latest version. I
was testing using a relatively recent meson release.
/Bruce
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 0/7] Get fast-test suite to run on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (8 preceding siblings ...)
2026-03-19 20:44 ` Patrick Robb
@ 2026-03-20 14:25 ` David Marchand
2026-03-20 14:31 ` Bruce Richardson
2026-03-20 16:11 ` [PATCH v2 0/2] " Bruce Richardson
2026-04-08 17:44 ` [PATCH v3 " Bruce Richardson
11 siblings, 1 reply; 33+ messages in thread
From: David Marchand @ 2026-03-20 14:25 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, lylavoie, probb
On Thu, 19 Mar 2026 at 18:13, Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> Bugzilla ID: 761
>
> The standard "fast-tests" suite is used to sanity-check large parts
> of the DPDK codebase, but it failed to run successfully on FreeBSD,
> with large numbers of failures. This is a long-standing issue reported
> in Bugzilla back in 2021 (hence the 3-digit BZ ID)
>
> This set attempts to rectify this situation by allowing the suite
> to run without errors. Mostly it does this by disabling test suites
> that rely on features like multi-process which are unsupported on
> FreeBSD. It also fixes the test_debug suite which should run on
> BSD but was failing.
>
> After this set, a run on my FreeBSD system passes with zero failures
> and 22 tests reported as skipped.
>
> Bruce Richardson (7):
> test/timer_secondary: skip test on FreeBSD
> test/eal_flags: skip test on FreeBSD
> test/pdump: skip test on FreeBSD
> test/secondary_process: skip test on FreeBSD
> test/external_memory: skip test on FreeBSD
> test/interrupts: skip test on FreeBSD
> test/debug: fix unit test on FreeBSD
>
> app/test/process.h | 11 ++++++++---
> app/test/test_debug.c | 6 +++---
> app/test/test_eal_flags.c | 26 +++++++++++++-------------
> app/test/test_external_mem.c | 4 ++--
> app/test/test_interrupts.c | 2 +-
> app/test/test_mp_secondary.c | 4 ++--
> app/test/test_pdump.c | 6 ++++++
> app/test/test_timer_secondary.c | 4 ++--
> 8 files changed, 37 insertions(+), 26 deletions(-)
I would put the exec discovery rework in a first patch, then squash
all the rest together.
Otherwise, it lgtm on the principle.
--
David Marchand
^ permalink raw reply [flat|nested] 33+ messages in thread* Re: [PATCH 0/7] Get fast-test suite to run on FreeBSD
2026-03-20 14:25 ` David Marchand
@ 2026-03-20 14:31 ` Bruce Richardson
0 siblings, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 14:31 UTC (permalink / raw)
To: David Marchand; +Cc: dev, lylavoie, probb
On Fri, Mar 20, 2026 at 03:25:26PM +0100, David Marchand wrote:
> On Thu, 19 Mar 2026 at 18:13, Bruce Richardson
> <bruce.richardson@intel.com> wrote:
> >
> > Bugzilla ID: 761
> >
> > The standard "fast-tests" suite is used to sanity-check large parts
> > of the DPDK codebase, but it failed to run successfully on FreeBSD,
> > with large numbers of failures. This is a long-standing issue reported
> > in Bugzilla back in 2021 (hence the 3-digit BZ ID)
> >
> > This set attempts to rectify this situation by allowing the suite
> > to run without errors. Mostly it does this by disabling test suites
> > that rely on features like multi-process which are unsupported on
> > FreeBSD. It also fixes the test_debug suite which should run on
> > BSD but was failing.
> >
> > After this set, a run on my FreeBSD system passes with zero failures
> > and 22 tests reported as skipped.
> >
> > Bruce Richardson (7):
> > test/timer_secondary: skip test on FreeBSD
> > test/eal_flags: skip test on FreeBSD
> > test/pdump: skip test on FreeBSD
> > test/secondary_process: skip test on FreeBSD
> > test/external_memory: skip test on FreeBSD
> > test/interrupts: skip test on FreeBSD
> > test/debug: fix unit test on FreeBSD
> >
> > app/test/process.h | 11 ++++++++---
> > app/test/test_debug.c | 6 +++---
> > app/test/test_eal_flags.c | 26 +++++++++++++-------------
> > app/test/test_external_mem.c | 4 ++--
> > app/test/test_interrupts.c | 2 +-
> > app/test/test_mp_secondary.c | 4 ++--
> > app/test/test_pdump.c | 6 ++++++
> > app/test/test_timer_secondary.c | 4 ++--
> > 8 files changed, 37 insertions(+), 26 deletions(-)
>
> I would put the exec discovery rework in a first patch, then squash
> all the rest together.
> Otherwise, it lgtm on the principle.
>
Ack, will rework into a 2-patch v2.
/Bruce
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 0/2] Get fast-test suite to run on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (9 preceding siblings ...)
2026-03-20 14:25 ` David Marchand
@ 2026-03-20 16:11 ` Bruce Richardson
2026-03-20 16:11 ` [PATCH v2 1/2] test: fix failing tests " Bruce Richardson
` (2 more replies)
2026-04-08 17:44 ` [PATCH v3 " Bruce Richardson
11 siblings, 3 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 16:11 UTC (permalink / raw)
To: dev; +Cc: david.marchand, probb, Bruce Richardson
The standard "fast-tests" suite is used to sanity-check large parts
of the DPDK codebase, but it failed to run successfully on FreeBSD,
with large numbers of failures. This is a long-standing issue reported
in Bugzilla back in 2021 as issue 761.
This set attempts to rectify this situation by allowing the suite
to run without errors. Mostly it does this by disabling test suites
that rely on features like multi-process which are unsupported on
FreeBSD. It also fixes the test_debug suite which should run on
BSD but was failing.
v2:
* squash patches for fixes into patch 1
* separate patch for some cleanup of process spawning into patch 2 which
does not need backport
Bruce Richardson (2):
test: fix failing tests on FreeBSD
test: simplify spawning extra test processes
app/test/process.h | 20 ++------------------
app/test/test_debug.c | 6 +++---
app/test/test_eal_flags.c | 26 +++++++++++++-------------
app/test/test_external_mem.c | 4 ++--
app/test/test_interrupts.c | 2 +-
app/test/test_mp_secondary.c | 4 ++--
app/test/test_pdump.c | 4 ++++
app/test/test_timer_secondary.c | 4 ++--
8 files changed, 29 insertions(+), 41 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 33+ messages in thread* [PATCH v2 1/2] test: fix failing tests on FreeBSD
2026-03-20 16:11 ` [PATCH v2 0/2] " Bruce Richardson
@ 2026-03-20 16:11 ` Bruce Richardson
2026-03-25 22:48 ` Thomas Monjalon
2026-03-20 16:11 ` [PATCH v2 2/2] test: simplify spawning extra test processes Bruce Richardson
2026-03-24 16:31 ` [PATCH v2 0/2] Get fast-test suite to run on FreeBSD Adam Hassick
2 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 16:11 UTC (permalink / raw)
To: dev; +Cc: david.marchand, probb, Bruce Richardson, stable, Anatoly Burakov
Many autotests were failing on FreeBSD, mostly because of the lack of
secondary process support. Skip these tests, and also fix the debug
autotest which crashes on FreeBSD if telemetry is not disabled for the
extra spawned process.
Bugzilla ID: 761
Fixes: 764bf26873b9 ("add FreeBSD support")
Fixes: 50247fe03fe0 ("test/timer: exercise new APIs in secondary process")
Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
Fixes: b270daa43b3d ("test: support external memory")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
app/test/test_debug.c | 6 +++---
app/test/test_eal_flags.c | 26 +++++++++++++-------------
app/test/test_external_mem.c | 4 ++--
app/test/test_interrupts.c | 2 +-
app/test/test_mp_secondary.c | 4 ++--
app/test/test_pdump.c | 4 ++++
app/test/test_timer_secondary.c | 4 ++--
7 files changed, 27 insertions(+), 23 deletions(-)
diff --git a/app/test/test_debug.c b/app/test/test_debug.c
index bfda4d1aa3..eda9c3e0e1 100644
--- a/app/test/test_debug.c
+++ b/app/test/test_debug.c
@@ -154,15 +154,15 @@ test_debug(void)
test_args[2] = "-l";
test_args[3] = core;
- if (rte_eal_has_hugepages()) {
+ if (rte_eal_has_hugepages() && RTE_EXEC_ENV_IS_LINUX) {
test_args[4] = "";
test_args[5] = "";
test_args[6] = "";
test_args[7] = "";
} else {
test_args[4] = "--no-huge";
- test_args[5] = "-m";
- test_args[6] = "2048";
+ test_args[5] = "-m2048";
+ test_args[6] = "--no-telemetry";
#ifdef RTE_ARCH_PPC_64
/* iova=pa is the default, but fails on ppc64 with --no-huge */
test_args[7] = "--iova-mode=va";
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index b3a8d0ae6f..12280e7a39 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -10,88 +10,88 @@
#include <string.h>
#include <stdarg.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_missing_c_flag(void)
{
- printf("missing_c_flag not supported on Windows, skipping test\n");
+ printf("missing_c_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_main_lcore_flag(void)
{
- printf("main_lcore_flag not supported on Windows, skipping test\n");
+ printf("main_lcore_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_n_flag(void)
{
- printf("invalid_n_flag not supported on Windows, skipping test\n");
+ printf("invalid_n_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_hpet_flag(void)
{
- printf("no_hpet_flag not supported on Windows, skipping test\n");
+ printf("no_hpet_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_huge_flag(void)
{
- printf("no_huge_flag not supported on Windows, skipping test\n");
+ printf("no_huge_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_allow_flag(void)
{
- printf("allow_flag not supported on Windows, skipping test\n");
+ printf("allow_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_b_flag(void)
{
- printf("invalid_b_flag not supported on Windows, skipping test\n");
+ printf("invalid_b_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_vdev_flag(void)
{
- printf("invalid_vdev_flag not supported on Windows, skipping test\n");
+ printf("invalid_vdev_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_r_flag(void)
{
- printf("invalid_r_flag not supported on Windows, skipping test\n");
+ printf("invalid_r_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_memory_flags(void)
{
- printf("memory_flags not supported on Windows, skipping test\n");
+ printf("memory_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_file_prefix(void)
{
- printf("file_prefix not supported on Windows, skipping test\n");
+ printf("file_prefix only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_misc_flags(void)
{
- printf("misc_flags not supported on Windows, skipping test\n");
+ printf("misc_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c
index 1c977b749b..53300983ed 100644
--- a/app/test/test_external_mem.c
+++ b/app/test/test_external_mem.c
@@ -10,11 +10,11 @@
#include <string.h>
#include <fcntl.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_external_mem(void)
{
- printf("external_mem not supported on Windows, skipping test\n");
+ printf("external_mem only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
index 2eb876e65a..3a5be92cd7 100644
--- a/app/test/test_interrupts.c
+++ b/app/test/test_interrupts.c
@@ -429,7 +429,7 @@ test_interrupt(void)
int ret = -1;
struct rte_intr_handle *test_intr_handle;
- if (RTE_EXEC_ENV_IS_WINDOWS)
+ if (RTE_EXEC_ENV_IS_WINDOWS || RTE_EXEC_ENV_IS_FREEBSD)
return TEST_SKIPPED;
if (test_interrupt_init() < 0) {
diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c
index 218eacb3bf..93fcfd735b 100644
--- a/app/test/test_mp_secondary.c
+++ b/app/test/test_mp_secondary.c
@@ -15,11 +15,11 @@
#include <string.h>
#include <unistd.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_mp_secondary(void)
{
- printf("mp_secondary not supported on Windows, skipping test\n");
+ printf("Multiprocess support on present on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
index 824caef2d4..64f1bbf21c 100644
--- a/app/test/test_pdump.c
+++ b/app/test/test_pdump.c
@@ -198,6 +198,10 @@ int
test_pdump(void)
{
int ret = 0;
+
+ if (RTE_EXEC_ENV_IS_FREEBSD)
+ return TEST_SKIPPED;
+
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
printf("IN PRIMARY PROCESS\n");
ret = run_pdump_server_tests();
diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c
index 0fc07dcbad..8582557035 100644
--- a/app/test/test_timer_secondary.c
+++ b/app/test/test_timer_secondary.c
@@ -16,11 +16,11 @@
#include "test.h"
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_timer_secondary(void)
{
- printf("timer_secondary not supported on Windows, skipping test\n");
+ printf("timer_secondary only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* [PATCH v2 2/2] test: simplify spawning extra test processes
2026-03-20 16:11 ` [PATCH v2 0/2] " Bruce Richardson
2026-03-20 16:11 ` [PATCH v2 1/2] test: fix failing tests " Bruce Richardson
@ 2026-03-20 16:11 ` Bruce Richardson
2026-03-25 22:50 ` Thomas Monjalon
2026-03-24 16:31 ` [PATCH v2 0/2] Get fast-test suite to run on FreeBSD Adam Hassick
2 siblings, 1 reply; 33+ messages in thread
From: Bruce Richardson @ 2026-03-20 16:11 UTC (permalink / raw)
To: dev; +Cc: david.marchand, probb, Bruce Richardson
A number of tests require secondary processes or additional primary
process instances, so we have common code for managing that in the test
binary. Simplify that code a little, in the process removing dependency
on procfs on FreeBSD
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/process.h | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/app/test/process.h b/app/test/process.h
index df43966a2a..3ee899dbc8 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -19,14 +19,6 @@
#include <rte_devargs.h>
#include <rte_eal.h>
-#ifdef RTE_EXEC_ENV_FREEBSD
-#define self "curproc"
-#define exe "file"
-#else
-#define self "self"
-#define exe "exe"
-#endif
-
#ifdef RTE_LIB_PDUMP
#ifdef RTE_NET_RING
#include <rte_thread.h>
@@ -96,7 +88,6 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
int driver_path_num;
int argv_num;
int i, status;
- char path[32];
#ifdef RTE_LIB_PDUMP
#ifdef RTE_NET_RING
rte_thread_t thread;
@@ -132,7 +123,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
#ifdef RTE_EXEC_ENV_LINUX
{
- const char *procdir = "/proc/" self "/fd/";
+ const char *procdir = "/proc/self/fd/";
struct dirent *dirent;
char *endptr;
int fd, fdir;
@@ -188,15 +179,8 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
/* set the environment variable */
if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
rte_panic("Cannot export environment variable\n");
-
- strlcpy(path, "/proc/" self "/" exe, sizeof(path));
- if (execv(path, argv_cpy) < 0) {
- if (errno == ENOENT) {
- printf("Could not find '%s', is procfs mounted?\n",
- path);
- }
+ if (execv(argv_cpy[0], argv_cpy) < 0)
rte_panic("Cannot exec: %s\n", strerror(errno));
- }
}
/* parent process does a wait */
#ifdef RTE_LIB_PDUMP
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* Re: [PATCH v2 0/2] Get fast-test suite to run on FreeBSD
2026-03-20 16:11 ` [PATCH v2 0/2] " Bruce Richardson
2026-03-20 16:11 ` [PATCH v2 1/2] test: fix failing tests " Bruce Richardson
2026-03-20 16:11 ` [PATCH v2 2/2] test: simplify spawning extra test processes Bruce Richardson
@ 2026-03-24 16:31 ` Adam Hassick
2 siblings, 0 replies; 33+ messages in thread
From: Adam Hassick @ 2026-03-24 16:31 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, david.marchand, probb
Tested-by: Adam Hassick <ahassick@iol.unh.edu>
I have posted a link to the unit test log on the ticket.
Related to the issue Patrick found, where Meson raises an error, we
are running an older version of Meson on our FreeBSD system (0.57.2).
^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v3 0/2] Get fast-test suite to run on FreeBSD
2026-03-19 17:11 [PATCH 0/7] Get fast-test suite to run on FreeBSD Bruce Richardson
` (10 preceding siblings ...)
2026-03-20 16:11 ` [PATCH v2 0/2] " Bruce Richardson
@ 2026-04-08 17:44 ` Bruce Richardson
2026-04-08 17:44 ` [PATCH v3 1/2] test: fix failing tests " Bruce Richardson
2026-04-08 17:44 ` [PATCH v3 2/2] test: simplify spawning extra test processes Bruce Richardson
11 siblings, 2 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-04-08 17:44 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Bruce Richardson
The standard "fast-tests" suite is used to sanity-check large parts
of the DPDK codebase, but it failed to run successfully on FreeBSD,
with large numbers of failures. This is a long-standing issue reported
in Bugzilla back in 2021 as issue 761.
This set attempts to rectify this situation by allowing the suite
to run without errors. Mostly it does this by disabling test suites
that rely on features like multi-process which are unsupported on
FreeBSD. It also fixes the test_debug suite which should run on
BSD but was failing.
V3:
* fix typo in patch 1
* expand explanation in commit log of patch 2
v2:
* squash patches for fixes into patch 1
* separate patch for some cleanup of process spawning into patch 2 which
does not need backport
Bruce Richardson (2):
test: fix failing tests on FreeBSD
test: simplify spawning extra test processes
app/test/process.h | 20 ++------------------
app/test/test_debug.c | 6 +++---
app/test/test_eal_flags.c | 26 +++++++++++++-------------
app/test/test_external_mem.c | 4 ++--
app/test/test_interrupts.c | 2 +-
app/test/test_mp_secondary.c | 4 ++--
app/test/test_pdump.c | 4 ++++
app/test/test_timer_secondary.c | 4 ++--
8 files changed, 29 insertions(+), 41 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 33+ messages in thread* [PATCH v3 1/2] test: fix failing tests on FreeBSD
2026-04-08 17:44 ` [PATCH v3 " Bruce Richardson
@ 2026-04-08 17:44 ` Bruce Richardson
2026-04-08 17:44 ` [PATCH v3 2/2] test: simplify spawning extra test processes Bruce Richardson
1 sibling, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-04-08 17:44 UTC (permalink / raw)
To: dev
Cc: david.marchand, thomas, Bruce Richardson, stable, Anatoly Burakov,
Adam Hassick
Many autotests were failing on FreeBSD, mostly because of the lack of
secondary process support. Skip these tests, and also fix the debug
autotest which crashes on FreeBSD if telemetry is not disabled for the
extra spawned process.
Bugzilla ID: 761
Fixes: 764bf26873b9 ("add FreeBSD support")
Fixes: 50247fe03fe0 ("test/timer: exercise new APIs in secondary process")
Fixes: 086eb64db39e ("test/pdump: add unit test for pdump library")
Fixes: b270daa43b3d ("test: support external memory")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Adam Hassick <ahassick@iol.unh.edu>
---
app/test/test_debug.c | 6 +++---
app/test/test_eal_flags.c | 26 +++++++++++++-------------
app/test/test_external_mem.c | 4 ++--
app/test/test_interrupts.c | 2 +-
app/test/test_mp_secondary.c | 4 ++--
app/test/test_pdump.c | 4 ++++
app/test/test_timer_secondary.c | 4 ++--
7 files changed, 27 insertions(+), 23 deletions(-)
diff --git a/app/test/test_debug.c b/app/test/test_debug.c
index bfda4d1aa3..eda9c3e0e1 100644
--- a/app/test/test_debug.c
+++ b/app/test/test_debug.c
@@ -154,15 +154,15 @@ test_debug(void)
test_args[2] = "-l";
test_args[3] = core;
- if (rte_eal_has_hugepages()) {
+ if (rte_eal_has_hugepages() && RTE_EXEC_ENV_IS_LINUX) {
test_args[4] = "";
test_args[5] = "";
test_args[6] = "";
test_args[7] = "";
} else {
test_args[4] = "--no-huge";
- test_args[5] = "-m";
- test_args[6] = "2048";
+ test_args[5] = "-m2048";
+ test_args[6] = "--no-telemetry";
#ifdef RTE_ARCH_PPC_64
/* iova=pa is the default, but fails on ppc64 with --no-huge */
test_args[7] = "--iova-mode=va";
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index b3a8d0ae6f..12280e7a39 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -10,88 +10,88 @@
#include <string.h>
#include <stdarg.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_missing_c_flag(void)
{
- printf("missing_c_flag not supported on Windows, skipping test\n");
+ printf("missing_c_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_main_lcore_flag(void)
{
- printf("main_lcore_flag not supported on Windows, skipping test\n");
+ printf("main_lcore_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_n_flag(void)
{
- printf("invalid_n_flag not supported on Windows, skipping test\n");
+ printf("invalid_n_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_hpet_flag(void)
{
- printf("no_hpet_flag not supported on Windows, skipping test\n");
+ printf("no_hpet_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_no_huge_flag(void)
{
- printf("no_huge_flag not supported on Windows, skipping test\n");
+ printf("no_huge_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_allow_flag(void)
{
- printf("allow_flag not supported on Windows, skipping test\n");
+ printf("allow_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_b_flag(void)
{
- printf("invalid_b_flag not supported on Windows, skipping test\n");
+ printf("invalid_b_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_vdev_flag(void)
{
- printf("invalid_vdev_flag not supported on Windows, skipping test\n");
+ printf("invalid_vdev_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_invalid_r_flag(void)
{
- printf("invalid_r_flag not supported on Windows, skipping test\n");
+ printf("invalid_r_flag only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_memory_flags(void)
{
- printf("memory_flags not supported on Windows, skipping test\n");
+ printf("memory_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_file_prefix(void)
{
- printf("file_prefix not supported on Windows, skipping test\n");
+ printf("file_prefix only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
static int
test_misc_flags(void)
{
- printf("misc_flags not supported on Windows, skipping test\n");
+ printf("misc_flags only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c
index 1c977b749b..53300983ed 100644
--- a/app/test/test_external_mem.c
+++ b/app/test/test_external_mem.c
@@ -10,11 +10,11 @@
#include <string.h>
#include <fcntl.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
static int
test_external_mem(void)
{
- printf("external_mem not supported on Windows, skipping test\n");
+ printf("external_mem only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c
index 2eb876e65a..3a5be92cd7 100644
--- a/app/test/test_interrupts.c
+++ b/app/test/test_interrupts.c
@@ -429,7 +429,7 @@ test_interrupt(void)
int ret = -1;
struct rte_intr_handle *test_intr_handle;
- if (RTE_EXEC_ENV_IS_WINDOWS)
+ if (RTE_EXEC_ENV_IS_WINDOWS || RTE_EXEC_ENV_IS_FREEBSD)
return TEST_SKIPPED;
if (test_interrupt_init() < 0) {
diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c
index 218eacb3bf..d89419c253 100644
--- a/app/test/test_mp_secondary.c
+++ b/app/test/test_mp_secondary.c
@@ -15,11 +15,11 @@
#include <string.h>
#include <unistd.h>
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_mp_secondary(void)
{
- printf("mp_secondary not supported on Windows, skipping test\n");
+ printf("Multiprocess support only present on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c
index 824caef2d4..64f1bbf21c 100644
--- a/app/test/test_pdump.c
+++ b/app/test/test_pdump.c
@@ -198,6 +198,10 @@ int
test_pdump(void)
{
int ret = 0;
+
+ if (RTE_EXEC_ENV_IS_FREEBSD)
+ return TEST_SKIPPED;
+
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
printf("IN PRIMARY PROCESS\n");
ret = run_pdump_server_tests();
diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c
index 57ab39130d..529774f4d0 100644
--- a/app/test/test_timer_secondary.c
+++ b/app/test/test_timer_secondary.c
@@ -18,11 +18,11 @@
#include "test.h"
-#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef RTE_EXEC_ENV_LINUX
int
test_timer_secondary(void)
{
- printf("timer_secondary not supported on Windows, skipping test\n");
+ printf("timer_secondary only supported on Linux, skipping test\n");
return TEST_SKIPPED;
}
#else
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread* [PATCH v3 2/2] test: simplify spawning extra test processes
2026-04-08 17:44 ` [PATCH v3 " Bruce Richardson
2026-04-08 17:44 ` [PATCH v3 1/2] test: fix failing tests " Bruce Richardson
@ 2026-04-08 17:44 ` Bruce Richardson
1 sibling, 0 replies; 33+ messages in thread
From: Bruce Richardson @ 2026-04-08 17:44 UTC (permalink / raw)
To: dev; +Cc: david.marchand, thomas, Bruce Richardson, Adam Hassick
A number of tests require secondary processes or additional primary
process instances, so we have common code for managing that in the test
binary. Simplify that code a little, in the process removing dependency
on procfs on FreeBSD, by using argv[0] as the binary to run, rather than
querying procfs for /proc/self/exe (or /proc/curproc/file on FreeBSD).
The unit tests should never be running in a way that leads to argv[0]
not being the actual test binary.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Adam Hassick <ahassick@iol.unh.edu>
---
app/test/process.h | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/app/test/process.h b/app/test/process.h
index df43966a2a..3ee899dbc8 100644
--- a/app/test/process.h
+++ b/app/test/process.h
@@ -19,14 +19,6 @@
#include <rte_devargs.h>
#include <rte_eal.h>
-#ifdef RTE_EXEC_ENV_FREEBSD
-#define self "curproc"
-#define exe "file"
-#else
-#define self "self"
-#define exe "exe"
-#endif
-
#ifdef RTE_LIB_PDUMP
#ifdef RTE_NET_RING
#include <rte_thread.h>
@@ -96,7 +88,6 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
int driver_path_num;
int argv_num;
int i, status;
- char path[32];
#ifdef RTE_LIB_PDUMP
#ifdef RTE_NET_RING
rte_thread_t thread;
@@ -132,7 +123,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
#ifdef RTE_EXEC_ENV_LINUX
{
- const char *procdir = "/proc/" self "/fd/";
+ const char *procdir = "/proc/self/fd/";
struct dirent *dirent;
char *endptr;
int fd, fdir;
@@ -188,15 +179,8 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
/* set the environment variable */
if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
rte_panic("Cannot export environment variable\n");
-
- strlcpy(path, "/proc/" self "/" exe, sizeof(path));
- if (execv(path, argv_cpy) < 0) {
- if (errno == ENOENT) {
- printf("Could not find '%s', is procfs mounted?\n",
- path);
- }
+ if (execv(argv_cpy[0], argv_cpy) < 0)
rte_panic("Cannot exec: %s\n", strerror(errno));
- }
}
/* parent process does a wait */
#ifdef RTE_LIB_PDUMP
--
2.51.0
^ permalink raw reply related [flat|nested] 33+ messages in thread