DPDK patches and discussions
 help / color / mirror / Atom feed
From: Aaron Conole <aconole@redhat.com>
To: "Van Haaren\, Harry" <harry.van.haaren@intel.com>
Cc: Thomas Monjalon <thomas@monjalon.net>, "Amber\,
	Kumar" <kumar.amber@intel.com>, "dev\@dpdk.org" <dev@dpdk.org>,
	"Wang\, Yipeng1" <yipeng1.wang@intel.com>, "Yigit\,
	Ferruh" <ferruh.yigit@intel.com>, "Thakur\,
	Sham Singh" <sham.singh.thakur@intel.com>,
	David Marchand <dmarchan@redhat.com>
Subject: Re: [dpdk-dev] [PATCH v3] hash: added a new API to hash to query key id
Date: Tue, 26 Nov 2019 08:57:16 -0500	[thread overview]
Message-ID: <f7tmucikaf7.fsf@dhcp-25.97.bos.redhat.com> (raw)
In-Reply-To: <MN2PR11MB4447CA264CAA0498BB936965D7450@MN2PR11MB4447.namprd11.prod.outlook.com> (Van Haaren's message of "Tue, 26 Nov 2019 13:29:37 +0000")

"Van Haaren, Harry" <harry.van.haaren@intel.com> writes:

>> -----Original Message-----
>> From: Van Haaren, Harry
>> Sent: Tuesday, November 26, 2019 1:19 PM
>> To: Aaron Conole <aconole@redhat.com>; Thomas Monjalon <thomas@monjalon.net>
>
> <snip>
>
>> > EAL: Test assert service_lcore_en_dis_able line 487 failed: Ex-service
>> core
>> > function call had no effect.
>> >
>> > So I'll spend some time in this area, it seems.
>> 
>> 
>> The below diff makes it 100% reproducible here, failing every time.
>> 
>> It seems like the main thread is returning, before the service thread has
>> returned.
>> 
>> The rte_eal_mp_wait_lcore() call seems to not wait on the service-core,
>> which allows
>> the main thread to read the "service_remote_launch_flag" value as 0 (before
>> the service-thread writes it to 1).
>> 
>> Adding the delay between the service launch and service write being
>> performed makes this issue much much more likely to occur - so the above
>> description I have confidence in.
>> 
>> What I'm not clear on (yet) is why the eal_mp_wait_lcore() isn't waiting...
>> 
>> -H
>> 
>> 
>> diff --git a/app/test/test_service_cores.c b/app/test/test_service_cores.c
>> index 9fe38f5e0..846ad00d1 100644
>> --- a/app/test/test_service_cores.c
>> +++ b/app/test/test_service_cores.c
>> @@ -445,6 +445,7 @@ static int
>>  service_remote_launch_func(void *arg)
>>  {
>>         RTE_SET_USED(arg);
>> +       rte_delay_ms(100);
>>         service_remote_launch_flag = 1;
>>         return 0;
>>  }
>
> Diff below seems to fix the problem here; Aaron would you test the below fix in your setup for a while too?
> I have a loop running here attempting to reproduce - but before 100% failures and so far 100% passes with the added wait_lcore() call.
>
>
> diff --git a/app/test/test_service_cores.c b/app/test/test_service_cores.c
> index 9fe38f5e0..62ffedb19 100644
> --- a/app/test/test_service_cores.c
> +++ b/app/test/test_service_cores.c
> @@ -445,6 +445,7 @@ static int
>  service_remote_launch_func(void *arg)
>  {
>         RTE_SET_USED(arg);
> +       rte_delay_ms(100);
>         service_remote_launch_flag = 1;
>         return 0;
>  }
> @@ -483,6 +484,7 @@ service_lcore_en_dis_able(void)
>         int ret = rte_eal_remote_launch(service_remote_launch_func, NULL,
>                                         slcore_id);
>         TEST_ASSERT_EQUAL(0, ret, "Ex-service core remote launch failed.");
> +       rte_eal_wait_lcore(slcore_id);
>         rte_eal_mp_wait_lcore();

Ahh, I see.  Actually, this brings up a question - is the intent for
mp_wait_lcore to cycle through the service cores as well?  Because IIUC,
the issue will be the lcore will be set to ROLE_RTE normally, but
service cores will do: ROLE_SERVICE and then the wait cannot work.

If the idea is that mp_wait_lcore should work (and looking at the test,
it seems like it is the intent?) then it will need to cycle through
service cores, too.  If the intent is that it shouldn't, then we should
remove those calls from the test application to prevent developer from
misunderstanding.

Either way, the documentation for `rte_service_lcore_start` is a bit too
ambiguous and needs to reflect whether the mp_wait_lcore should work.  I
think either it should (which means updating rte_get_next_lcore to
include ROLE_SERVICE), or none of the lcore functions should work, and
we should have an rte_service...() equivalent that should be used.

>         TEST_ASSERT_EQUAL(1, service_remote_launch_flag,
>                         "Ex-service core function call had no effect.");


  reply	other threads:[~2019-11-26 13:57 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-22 14:59 [dpdk-dev] [PATCH v2] " Kumar Amber
2019-11-22 18:21 ` [dpdk-dev] [PATCH v3] " Kumar Amber
2019-11-25 11:08   ` Kumar Amber
2019-11-25 15:50     ` Amber, Kumar
2019-11-25 16:01       ` Aaron Conole
2019-11-25 16:58       ` Aaron Conole
2019-11-25 17:16         ` Van Haaren, Harry
2019-11-25 17:54           ` Thomas Monjalon
2019-11-25 18:10             ` Aaron Conole
2019-11-25 22:53               ` Aaron Conole
2019-11-26 13:19                 ` Van Haaren, Harry
2019-11-26 13:29                   ` Van Haaren, Harry
2019-11-26 13:57                     ` Aaron Conole [this message]
2019-11-27 11:37                       ` Van Haaren, Harry
2019-11-26 15:58                   ` Aaron Conole
2019-11-25 19:41     ` Wang, Yipeng1
2019-11-26  2:39   ` [dpdk-dev] [PATCH v4] " Kumar Amber
2019-11-27  1:59     ` Wang, Yipeng1
2020-01-20  0:16       ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7tmucikaf7.fsf@dhcp-25.97.bos.redhat.com \
    --to=aconole@redhat.com \
    --cc=dev@dpdk.org \
    --cc=dmarchan@redhat.com \
    --cc=ferruh.yigit@intel.com \
    --cc=harry.van.haaren@intel.com \
    --cc=kumar.amber@intel.com \
    --cc=sham.singh.thakur@intel.com \
    --cc=thomas@monjalon.net \
    --cc=yipeng1.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).