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: [email protected] Signed-off-by: David Marchand <[email protected]> Acked-by: Morten Brørup <[email protected]> --- 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

