-----Original Message----- > Date: Thu, 13 Sep 2018 17:40:53 +0000 > From: Honnappa Nagarahalli <[email protected]> > To: Jerin Jacob <[email protected]>, Ola Liljedahl > <[email protected]> > CC: "Kokkilagadda, Kiran" <[email protected]>, "Gavin Hu (Arm > Technology China)" <[email protected]>, Ferruh Yigit > <[email protected]>, "Jacob, Jerin" > <[email protected]>, "[email protected]" <[email protected]>, nd > <[email protected]>, Steve Capper <[email protected]>, "Phil Yang (Arm > Technology China)" <[email protected]> > Subject: RE: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > synchronization > > > Hi Jerin, > Is there any reason for having 'RTE_RING_USE_C11_MEM_MODEL', which is > specific to rte_ring? I do not see a need for choosing only some algorithms > to work with C11 model. I suggest that we change this to > 'RTE_USE_C11_MEM_MODEL' so that it can apply to all libraries/algorithms.
Yes. Makes sense to me to keep only single config option. > > Thank you, > Honnappa > > -----Original Message----- > From: Jerin Jacob <[email protected]> > Sent: Wednesday, August 29, 2018 3:58 AM > To: Ola Liljedahl <[email protected]> > Cc: Kokkilagadda, Kiran <[email protected]>; Honnappa Nagarahalli > <[email protected]>; Gavin Hu <[email protected]>; Ferruh Yigit > <[email protected]>; Jacob, Jerin <[email protected]>; > [email protected]; nd <[email protected]>; Steve Capper <[email protected]> > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > synchronization > > -----Original Message----- > > Date: Wed, 29 Aug 2018 08:47:56 +0000 > > From: Ola Liljedahl <[email protected]> > > To: Jerin Jacob <[email protected]> > > CC: "Kokkilagadda, Kiran" <[email protected]>, Honnappa > > Nagarahalli <[email protected]>, Gavin Hu > > <[email protected]>, Ferruh Yigit <[email protected]>, "Jacob, Jerin" > > <[email protected]>, "[email protected]" <[email protected]>, > > nd <[email protected]>, Steve Capper <[email protected]> > > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > user-agent: Microsoft-MacOutlook/10.10.0.180812 > > > > > > There was a mention of rte_ring which is a different data structure. But > > perhaps I misunderstood why this was mentioned and the idea was only to use > > the C11 memory model as is also used in rte_ring nowadays. > > > > But why would we have different code for x86 and for other architectures > > (ARM, Power)? If we use the C11 memory model (and e.g. GCC __atomic > > builtins), the code generated for x86 will be the same. > > __atomic_load(__ATOMIC_ACQUIRE) and __atomic_store(__ATOMIC_RELEASE) should > > translate to plain loads and stores on x86? > > # One reason was __atomic builtins primitives were implemented in gcc 4.7 > and x86 would like to support < gcc 4.7 and ICC compiler. > # The theme was no change in the existing code for x86.I am not sure about > the code generation for x86 with __atomic builtins, I let x86 maintainers to > comments on this. > > > > > > -- Ola > > > > On 29/08/2018, 10:28, "Jerin Jacob" <[email protected]> wrote: > > > > -----Original Message----- > > > Date: Wed, 29 Aug 2018 07:34:34 +0000 > > > From: Ola Liljedahl <[email protected]> > > > To: "Kokkilagadda, Kiran" <[email protected]>, Honnappa > > > Nagarahalli <[email protected]>, Gavin Hu > > <[email protected]>, > > > Ferruh Yigit <[email protected]>, "Jacob, Jerin" > > > <[email protected]> > > > CC: "[email protected]" <[email protected]>, nd <[email protected]>, Steve Capper > > > <[email protected]> > > > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > > synchronization > > > user-agent: Microsoft-MacOutlook/10.10.0.180812 > > > > > > Is the rte_kni kernel/user binary interface subject to backwards > > compatibility requirements? Or can we change it for a new DPDK release? > > > > What would be the change in interface? Is it removing the volatile for > > C11 case, Then you can use anonymous union OR #define to keep the size > > and offset of the element intact. > > > > struct rte_kni_fifo { > > #ifndef RTE_C11... > > volatile unsigned write; /**< Next position to be written*/ > > volatile unsigned read; /**< Next position to be read */ > > #else > > unsigned write; /**< Next position to be written*/ > > unsigned read; /**< Next position to be read */ > > #endif > > unsigned len; /**< Circular buffer length */ > > unsigned elem_size; /**< Pointer size - for 32/64 > > bitOS */ > > void *volatile buffer[]; /**< The buffer contains mbuf > > pointers */ > > }; > > > > Anonymous union example: > > https://git.dpdk.org/dpdk/tree/lib/librte_mbuf/rte_mbuf.h#n461 > > > > You can check the ABI breakage by devtools/validate-abi.sh > > > > > > > > -- Ola > > > > > > From: "Kokkilagadda, Kiran" <[email protected]> > > > Date: Wednesday, 29 August 2018 at 07:50 > > > To: Honnappa Nagarahalli <[email protected]>, Gavin Hu > > <[email protected]>, Ferruh Yigit <[email protected]>, "Jacob, Jerin" > > <[email protected]> > > > Cc: "[email protected]" <[email protected]>, nd <[email protected]>, Ola Liljedahl > > <[email protected]>, Steve Capper <[email protected]> > > > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > > > > > > > > Agreed. Please go a head and make the changes. You need to make same > > change in kernel side also. And please use c11 ring (see rte_ring) > > mechanism so that it won't impact other platforms like intel. We need this > > change just for arm and ppc. > > > > > > ________________________________ > > > From: Honnappa Nagarahalli <[email protected]> > > > Sent: Wednesday, August 29, 2018 10:29 AM > > > To: Gavin Hu; Kokkilagadda, Kiran; Ferruh Yigit; Jacob, Jerin > > > Cc: [email protected]; nd; Ola Liljedahl; Steve Capper > > > Subject: RE: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > > > > > > > > External Email > > > > > > I agree with Gavin here. Store to fifo->write and fifo->read can get > > hoisted resulting in accessing invalid buffer array entries or over writing > > of the buffer array entries. > > > > > > IMO, we should solve this using c11 atomics. This will also help > > remove the use of ‘volatile’ from ‘rte_kni_fifo’ structure. > > > > > > > > > > > > If you want us to put together a patch with this idea, please let us > > know. > > > > > > > > > > > > Thank you, > > > > > > Honnappa > > > > > > > > > > > > From: Gavin Hu > > > Sent: Tuesday, August 28, 2018 2:31 PM > > > To: Kokkilagadda, Kiran <[email protected]>; Ferruh Yigit > > <[email protected]>; Jacob, Jerin <[email protected]> > > > Cc: [email protected]; Honnappa Nagarahalli > > <[email protected]>; nd <[email protected]>; Ola Liljedahl > > <[email protected]>; Steve Capper <[email protected]> > > > Subject: RE: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > > > > > > > > > > > Assuming reader and writer may execute on different CPU's, this > > become standard multithreaded programming. > > > > > > We are concerned about that update the reader pointer too early(weak > > ordering may reorder it before reading from the slots), that means the > > slots are released and may immediately overwritten by the writer then you > > get “too new” data and get lost of the old data. > > > > > > > > > > > > From: Kokkilagadda, Kiran > > <[email protected]<mailto:[email protected]>> > > > Sent: Tuesday, August 28, 2018 6:44 PM > > > To: Gavin Hu <[email protected]<mailto:[email protected]>>; Ferruh > > Yigit <[email protected]<mailto:[email protected]>>; Jacob, Jerin > > <[email protected]<mailto:[email protected]>> > > > Cc: [email protected]<mailto:[email protected]>; Honnappa Nagarahalli > > <[email protected]<mailto:[email protected]>> > > > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > > > > > > > > > > > In this instance there won't be any problem, as until the value of > > fifo->write changes, this loop won't get executed. As of now we didn't see > > any issue with it and for performance reasons, we don't want to keep read > > barrier. > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > From: Gavin Hu <[email protected]<mailto:[email protected]>> > > > Sent: Monday, August 27, 2018 9:10 PM > > > To: Ferruh Yigit; Kokkilagadda, Kiran; Jacob, Jerin > > > Cc: [email protected]<mailto:[email protected]>; Honnappa Nagarahalli > > > Subject: RE: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > synchronization > > > > > > > > > > > > External Email > > > > > > This fix is not complete, kni_fifo_get requires a read fence also, > > otherwise it probably gets stale data on a weak ordering platform. > > > > > > > -----Original Message----- > > > > From: dev <[email protected]<mailto:[email protected]>> On > > Behalf Of Ferruh Yigit > > > > Sent: Monday, August 27, 2018 10:08 PM > > > > To: Kiran Kumar > > <[email protected]<mailto:[email protected]>>; > > > > > > [email protected]<mailto:[email protected]> > > > > Cc: [email protected]<mailto:[email protected]> > > > > Subject: Re: [dpdk-dev] [PATCH v2] kni: fix kni Rx fifo producer > > > > synchronization > > > > > > > > On 8/16/2018 10:55 AM, Kiran Kumar wrote: > > > > > With existing code in kni_fifo_put, rx_q values are not being > > updated > > > > > before updating fifo_write. While reading rx_q in > > kni_net_rx_normal, > > > > > This is causing the sync issue on other core. So adding a write > > > > > barrier to make sure the values being synced before updating > > fifo_write. > > > > > > > > > > Fixes: 3fc5ca2f6352 ("kni: initial import") > > > > > > > > > > Signed-off-by: Kiran Kumar > > <[email protected]<mailto:[email protected]>> > > > > > Acked-by: Jerin Jacob > > <[email protected]<mailto:[email protected]>> > > > > > > > > Acked-by: Ferruh Yigit > > <[email protected]<mailto:[email protected]>> > > > IMPORTANT NOTICE: The contents of this email and any attachments are > > confidential and may also be privileged. If you are not the intended > > recipient, please notify the sender immediately and do not disclose the > > contents to any other person, use it for any purpose, or store or copy the > > information in any medium. Thank you. > > > >

