On Thu, 9 May 2019 11:08:30 +0100 "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote:
> On 09-May-19 10:50 AM, Ray Kinsella wrote: > > > > > > 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. > > > > That easily can be done, yes. > FYI - I submitted patches to make lcore_config private. These patches should handle mem_config. And I started on making eal_config private (but mem_config got in the way). Other candidates are the internals behind ethdev and devices.