[PATCH v2] test: defer timer initialization
David Marchand
david.marchand at redhat.com
Mon Oct 19 10:16:02 CEST 2026
Initialize timers only in unit tests that do require them.
This removes an unconditional memzone allocation (3MB on ARM) and
avoids failures of the eal_flags_file_prefix_autotest unit test
that runs in legacy mem mode and has a tight 18MB memory budget.
Cc: stable at dpdk.org
Signed-off-by: David Marchand <david.marchand at redhat.com>
Acked-by: Morten Brørup <mb at smartsharesystems.com>
---
Changes since v1:
- fixed overwritten default return code in pdcp_autotest,
- factorized timer init in timer_secondary_autotest,
---
app/test/test.c | 8 --------
app/test/test_pdcp.c | 10 +++++++++-
app/test/test_timer.c | 7 +++++++
app/test/test_timer_perf.c | 7 +++++++
app/test/test_timer_racecond.c | 6 ++++++
app/test/test_timer_secondary.c | 18 ++++++++++++------
6 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/app/test/test.c b/app/test/test.c
index c610c3588e..8f23325cb6 100644
--- a/app/test/test.c
+++ b/app/test/test.c
@@ -162,14 +162,6 @@ main(int argc, char **argv)
prgname = argv[0];
-#ifdef RTE_LIB_TIMER
- ret = rte_timer_subsystem_init();
- if (ret < 0 && ret != -EALREADY) {
- ret = -1;
- goto out;
- }
-#endif
-
if (commands_init() < 0) {
ret = -1;
goto out;
diff --git a/app/test/test_pdcp.c b/app/test/test_pdcp.c
index 784e2dddd9..af525cf73a 100644
--- a/app/test/test_pdcp.c
+++ b/app/test/test_pdcp.c
@@ -1751,7 +1751,7 @@ test_expiry_with_rte_timer(const struct pdcp_test_conf *ul_conf)
struct test_rte_timer_args timer_args;
struct rte_pdcp_entity *pdcp_entity;
struct pdcp_test_conf dl_conf;
- int ret = TEST_FAILED, nb_out;
+ int ret, nb_out;
struct rte_timer timer = {0};
const int start_count = 0;
@@ -1759,6 +1759,14 @@ test_expiry_with_rte_timer(const struct pdcp_test_conf *ul_conf)
if (ul_conf->entity.pdcp_xfrm.pkt_dir == RTE_SECURITY_PDCP_DOWNLINK)
return TEST_SKIPPED;
+ ret = rte_timer_subsystem_init();
+ if (ret < 0 && ret != -EALREADY) {
+ printf("timer subsystem init failed: %d\n", ret);
+ return TEST_FAILED;
+ }
+
+ ret = TEST_FAILED;
+
/* Set up a timer */
rte_timer_init(&timer);
diff --git a/app/test/test_timer.c b/app/test/test_timer.c
index c936843ddc..c943d3155d 100644
--- a/app/test/test_timer.c
+++ b/app/test/test_timer.c
@@ -540,12 +540,19 @@ test_timer(void)
unsigned i;
uint64_t cur_time;
uint64_t hz;
+ int ret;
if (rte_lcore_count() < 2) {
printf("Not enough cores for timer_autotest, expecting at least 2\n");
return TEST_SKIPPED;
}
+ ret = rte_timer_subsystem_init();
+ if (ret < 0 && ret != -EALREADY) {
+ printf("timer subsystem init failed: %d\n", ret);
+ return TEST_FAILED;
+ }
+
/* sanity check our timer sources and timer config values */
if (timer_sanity_check() < 0) {
printf("Timer sanity checks failed\n");
diff --git a/app/test/test_timer_perf.c b/app/test/test_timer_perf.c
index d2d74ebbc6..feb2e910b5 100644
--- a/app/test/test_timer_perf.c
+++ b/app/test/test_timer_perf.c
@@ -41,6 +41,13 @@ test_timer_perf(void)
struct rte_timer *tms;
uint64_t start_tsc, end_tsc, delay_start;
unsigned lcore_id = rte_lcore_id();
+ int ret;
+
+ ret = rte_timer_subsystem_init();
+ if (ret < 0 && ret != -EALREADY) {
+ printf("timer subsystem init failed: %d\n", ret);
+ return TEST_FAILED;
+ }
tms = rte_malloc(NULL, sizeof(*tms) * MAX_ITERATIONS, 0);
diff --git a/app/test/test_timer_racecond.c b/app/test/test_timer_racecond.c
index 6f8b448ff8..4f0ae04062 100644
--- a/app/test/test_timer_racecond.c
+++ b/app/test/test_timer_racecond.c
@@ -121,6 +121,12 @@ test_timer_racecond(void)
unsigned lcore_id;
unsigned i;
+ ret = rte_timer_subsystem_init();
+ if (ret < 0 && ret != -EALREADY) {
+ printf("timer subsystem init failed: %d\n", ret);
+ return TEST_FAILED;
+ }
+
main_lcore = lcore_id = rte_lcore_id();
hz = rte_get_timer_hz();
diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c
index 529774f4d0..774751c0f5 100644
--- a/app/test/test_timer_secondary.c
+++ b/app/test/test_timer_secondary.c
@@ -127,13 +127,19 @@ test_timer_secondary(void)
struct test_info *test_info;
int ret;
- if (proc_type == RTE_PROC_PRIMARY) {
- if (rte_lcore_count() < NUM_LCORES_NEEDED) {
- printf("Not enough cores for test_timer_secondary, expecting at least %u\n",
- NUM_LCORES_NEEDED);
- return TEST_SKIPPED;
- }
+ if (proc_type == RTE_PROC_PRIMARY && rte_lcore_count() < NUM_LCORES_NEEDED) {
+ printf("Not enough cores for test_timer_secondary, expecting at least %u\n",
+ NUM_LCORES_NEEDED);
+ return TEST_SKIPPED;
+ }
+ ret = rte_timer_subsystem_init();
+ if (ret < 0 && ret != -EALREADY) {
+ printf("timer subsystem init failed: %d\n", ret);
+ return TEST_FAILED;
+ }
+
+ if (proc_type == RTE_PROC_PRIMARY) {
mz = rte_memzone_reserve(TEST_INFO_MZ_NAME, sizeof(*test_info),
SOCKET_ID_ANY, 0);
TEST_ASSERT_NOT_NULL(mz, "Couldn't allocate memory for "
--
2.54.0
More information about the stable
mailing list