DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Mattias Rönnblom" <hofors@lysator.liu.se>
To: "Van Haaren, Harry" <harry.van.haaren@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] eventdev: fix incorrect MP/MC tail updates in rte_event_ring
Date: Tue, 3 Apr 2018 10:14:46 +0200	[thread overview]
Message-ID: <6976944b-b835-925a-15dd-833f583104a5@lysator.liu.se> (raw)
In-Reply-To: <E923DB57A917B54B9182A2E928D00FA65E018DD7@IRSMSX101.ger.corp.intel.com>

On 2018-03-29 14:38, Van Haaren, Harry wrote:
>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Mattias Rönnblom
>> Sent: Wednesday, March 28, 2018 10:17 AM
>> To: dev@dpdk.org
>> Cc: Mattias Rönnblom <hofors@lysator.liu.se>
>> Subject: [dpdk-dev] [PATCH] eventdev: fix incorrect MP/MC tail updates in
>> rte_event_ring
>>
>> rte_event_ring enqueue and dequeue tail updates were hardcoded for a
>> SC/SP configuration.
>>
>> Signed-off-by: Mattias Rönnblom <hofors@lysator.liu.se>
>> ---
> 
> Hi Mattias,
> 
> 
> Thanks for your patch, a few notes;
> 
> 1)
> You can CC the maintainer of a section - the event rings falls under
> the eventdev library, and Jerin Jacob is the maintainer.
> 
> 
> 2)
> In DPDK we note patches that are "Fixes",
> so we can track what commit they fix. Fixes patches are
> also often candidates for backporting.
> 
> Details on getting the fixes line here:
> https://dpdk.org/doc/guides/contributing/patches.html#commit-messages-body
> 
> For this patch, the following is the fixline:
> 
> Fixes: dc39e2f359b5 ("eventdev: add ring structure for events")
> Cc: bruce.richardson@intel.com
> 
> 

Thanks for your help. I'll resubmit and try to get the administrative 
details correct.

>>   lib/librte_eventdev/rte_event_ring.h | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/librte_eventdev/rte_event_ring.h
>> b/lib/librte_eventdev/rte_event_ring.h
>> index 29d4228..07b4559 100644
>> --- a/lib/librte_eventdev/rte_event_ring.h
>> +++ b/lib/librte_eventdev/rte_event_ring.h
>> @@ -99,7 +99,7 @@ rte_event_ring_enqueue_burst(struct rte_event_ring *r,
>>
>>   	ENQUEUE_PTRS(&r->r, &r[1], prod_head, events, n, struct rte_event);
>>
>> -	update_tail(&r->r.prod, prod_head, prod_next, 1, 1);
>> +	update_tail(&r->r.prod, prod_head, prod_next, 1, r->r.prod.single);
>>   end:
>>   	if (free_space != NULL)
>>   		*free_space = free_entries - n;
>> @@ -140,7 +140,7 @@ rte_event_ring_dequeue_burst(struct rte_event_ring *r,
>>
>>   	DEQUEUE_PTRS(&r->r, &r[1], cons_head, events, n, struct rte_event);
>>
>> -	update_tail(&r->r.cons, cons_head, cons_next, 1, 0);
>> +	update_tail(&r->r.cons, cons_head, cons_next, 1, r->r.cons.single);
> 
> 
> The signature of update_tail() is as follows:
> 
> static __rte_always_inline void
> update_tail(struct rte_ring_headtail *ht, uint32_t old_val, uint32_t new_val,
> 		uint32_t single, uint32_t enqueue)
> 
> It seems to be that the 2nd last parameter sets the single/multi producer?
> 

Yes, you are right. I ported this fix from my 17.08 tree, and 
update_tail() has changed since then - something I failed to notice.

I reproduced the issue on 17.08, and even on a machine with a strong 
memory model, the event ring doesn't work correctly in a MP/SC 
configuration. With the fix, it at least passes my tests on 17.08. I 
didn't try MP/MC, and I also didn't try anything beyond building on HEAD.

Regards,
	Mattias

  parent reply	other threads:[~2018-04-03  8:14 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-28  9:16 Mattias Rönnblom
2018-03-29 12:38 ` Van Haaren, Harry
2018-04-02  2:55   ` Jerin Jacob
2018-04-03  8:14   ` Mattias Rönnblom [this message]
2018-04-03  8:19 ` Mattias Rönnblom
2018-04-04  0:52   ` Jerin Jacob
2018-04-04  8:52     ` Bruce Richardson
2018-04-04  9:46       ` Jerin Jacob
2018-04-04 10:36       ` Van Haaren, Harry

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=6976944b-b835-925a-15dd-833f583104a5@lysator.liu.se \
    --to=hofors@lysator.liu.se \
    --cc=dev@dpdk.org \
    --cc=harry.van.haaren@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).