On 09/05/2019 10:38, Thomas Monjalon wrote:
> 09/05/2019 11:37, Burakov, Anatoly:
>> On 09-May-19 10:06 AM, Bruce Richardson wrote:
>>> On Thu, May 09, 2019 at 09:33:32AM +0100, Burakov, Anatoly wrote:
>>>> On 09-May-19 8:05 AM, David Marchand wrote:
>>>>> On Thu, May 9, 2019 at 3:11 AM Stephen Hemminger
>>>>> <step...@networkplumber.org <mailto:step...@networkplumber.org>> wrote:
>>>>>
>>>>> On Wed, 8 May 2019 17:48:06 -0500
>>>>> Erik Gabriel Carrillo <erik.g.carri...@intel.com
>>>>> <mailto:erik.g.carri...@intel.com>> wrote:
>>>>>
>>>>> > Due to an upcoming fix to allow the timer library to safely free
>>>>> its
>>>>> > allocations during the finalize() call[1], an ABI change will be
>>>>> > required. A new lock will be added to the rte_mem_config
>>>>> structure,
>>>>> > which will be used by the timer library to synchronize
>>>>> init/finalize
>>>>> > calls among multiple processes.
>>>>> >
>>>>> > [1] http://patches.dpdk.org/patch/53334/
>>>>> >
>>>>> > Signed-off-by: Erik Gabriel Carrillo <erik.g.carri...@intel.com
>>>>> <mailto:erik.g.carri...@intel.com>>
>>>>> > ---
>>>>> > doc/guides/rel_notes/deprecation.rst | 4 ++++
>>>>> > 1 file changed, 4 insertions(+)
>>>>> >
>>>>> > diff --git a/doc/guides/rel_notes/deprecation.rst
>>>>> b/doc/guides/rel_notes/deprecation.rst
>>>>> > index b47c8c2..7551383 100644
>>>>> > --- a/doc/guides/rel_notes/deprecation.rst
>>>>> > +++ b/doc/guides/rel_notes/deprecation.rst
>>>>> > @@ -31,6 +31,10 @@ Deprecation Notices
>>>>> >
>>>>> > + ``rte_eal_devargs_type_count``
>>>>> >
>>>>> > +* eal: the ``rte_mem_config`` struct will change to include a
>>>>> new lock that
>>>>> > + will allow the timer subsystem to safely release its
>>>>> allocations at cleanup
>>>>> > + time. This will result in an ABI break.
>>>>> > +
>>>>> > * vfio: removal of ``rte_vfio_dma_map`` and
>>>>> ``rte_vfio_dma_unmap`` APIs which
>>>>> > have been replaced with ``rte_dev_dma_map`` and
>>>>> ``rte_dev_dma_unmap``
>>>>> > functions. The due date for the removal targets DPDK 20.02.
>>>>>
>>>>> NAK
>>>>>
>>>>> Please go to the effort of making rte_mem_config not part of the
>>>>> visible ABI.
>>>>> Then change it.
>>>>>
>>>>>
>>>>> +1.
>>>>
>>>> I agree on principle, however this won't solve the issue. It doesn't need
>>>> to
>>>> be externally visible, but that's not all of its problems - it's also
>>>> shared
>>>> between processes so there's an ABI contract between primary and secondary
>>>> too. This means that, even if the structure itself is not public, any
>>>> changes to it will still result in an ABI break. That's the nature of our
>>>> shared memory.
>>>>
>>>> In other words, if your goal is to avoid ABI breaks on changing this
>>>> structure, making it internal won't help in the slightest.
>>>>
>>>
>>> Is there an ABI contract between primary and secondary. I always assumed
>>> that if using secondary processes the requirement (though undocumented) was
>>> that both had to be linked against the exact same versions of DPDK?
>>>
>>
>> The fact that it's undocumented means we can't assume everyone will do
>> that :)
>>
>> If the community agrees that primary/secondary processes should always
>> use the same DPDK version (regardless of static/dynamic builds etc.),
>> then this problem would probably be solved.
>
> +1 to document that primary/secondary with different DPDK versions
> is not supported.
>
+1,
but I think we need to go farther - we need a secondary process to check
with the primary process.
We can't assume everyone will read the documentation.