From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavan Nikhilesh Subject: Re: [PATCH 2/2] service: fix service core launch Date: Thu, 4 Jan 2018 21:00:59 +0530 Message-ID: <20180104153058.mm4s24p2jpqmsiie@Pavan-LT> References: <1513768907-112647-1-git-send-email-harry.van.haaren@intel.com> <1513768907-112647-2-git-send-email-harry.van.haaren@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org To: Harry van Haaren Return-path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0052.outbound.protection.outlook.com [104.47.38.52]) by dpdk.org (Postfix) with ESMTP id E5F967CFC for ; Thu, 4 Jan 2018 16:31:07 +0100 (CET) Content-Disposition: inline In-Reply-To: <1513768907-112647-2-git-send-email-harry.van.haaren@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Harry, On Wed, Dec 20, 2017 at 11:21:47AM +0000, Harry van Haaren wrote: > diff --git a/test/test/test_service_cores.c b/test/test/test_service_cores.c > index 311c704..43f2318 100644 > --- a/test/test/test_service_cores.c > +++ b/test/test/test_service_cores.c > @@ -348,6 +348,7 @@ service_lcore_en_dis_able(void) > > /* call remote_launch to verify that app can launch ex-service lcore */ > service_remote_launch_flag = 0; > + rte_eal_wait_lcore(slcore_id); > int ret = rte_eal_remote_launch(service_remote_launch_func, NULL, > slcore_id); > TEST_ASSERT_EQUAL(0, ret, "Ex-service core remote launch failed."); > @@ -505,6 +506,10 @@ service_threaded_test(int mt_safe) > if (!mt_safe) > test_params[1] = 1; > > + /* wait for lcores before start() */ > + rte_eal_wait_lcore(slcore_1); > + rte_eal_wait_lcore(slcore_2); > + > rte_service_lcore_start(slcore_1); > rte_service_lcore_start(slcore_2); As you are touching this file can you change following things: Need to increase the delay to a value similar to other tc. service_lcore_running_check(void) { uint64_t tick = service_tick; - rte_delay_ms(SERVICE_DELAY * 10); + rte_delay_ms(100); /* if (tick != service_tick) we know the lcore as polled the service */ return tick != service_tick; } As service_mt_unsafe_poll and service_mt_safe_poll use the same function body and are called one after the other we need to wait for them to complete before proceeding to the next tc i.e service_mt_unsafe_poll -> wait for the cores to complete -> service_mt_safe_poll else it will lead to unintended side effects. @@ -523,6 +523,8 @@ service_threaded_test(int mt_safe) TEST_ASSERT_EQUAL(0, rte_service_runstate_set(sid, 0), "Failed to stop MT Safe service"); + rte_eal_wait_lcore(slcore_1); + rte_eal_wait_lcore(slcore_2); unregister_all(); /* return the value of the callback pass_test variable to caller */ Cheers, Pavan. > > @@ -611,6 +616,7 @@ service_app_lcore_poll_impl(const int mt_safe) > rte_service_runstate_set(id, 1); > > uint32_t app_core2 = rte_get_next_lcore(slcore_id, 1, 1); > + rte_eal_wait_lcore(app_core2); > int app_core2_ret = rte_eal_remote_launch(service_run_on_app_core_func, > &id, app_core2); > > -- > 2.7.4 >