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

Reply via email to