DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andrew Rybchenko <arybchenko@solarflare.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: <david.marchand@redhat.com>, <dev@dpdk.org>
Subject: Re: [dpdk-dev] [RFC PATCH 0/5] rework feature enabling macros for compatibility
Date: Fri, 18 Sep 2020 11:59:12 +0300	[thread overview]
Message-ID: <2e1310d7-4e94-40f1-b5eb-ed827645be0b@solarflare.com> (raw)
In-Reply-To: <20200918084136.GD1583@bricha3-MOBL.ger.corp.intel.com>

On 9/18/20 11:41 AM, Bruce Richardson wrote:
> On Thu, Sep 17, 2020 at 08:59:26PM +0300, Andrew Rybchenko wrote:
>> On 9/16/20 7:44 PM, Bruce Richardson wrote:
>>> As flagged previously on-list, there are a number of macros used to specify
>>> what libs and drivers are enabled in the build which differ from the
>>> equivalents used with make. This patchset is one possible approach to
>>> fixing these, but as part of the investigation some issues were hit where
>>> I'd like additional input to ensure we are ok with the approach taken in
>>> this set.
>>>
>>> First, a problem statement:
>>>
>>> * While the make build defines generally followed a pattern, there were
>>>    many instances where the defines were unique. These can be seen in the
>>>    values defined in patch 4.
>>>
>>> * The NIC PMDs had two separate standards for the defines - some (the
>>>    physical device drivers) tended to have the _PMD at the end of the
>>>    macros, while the virtual drivers had it in the middle. Since the
>>>    majority seemed to go with it at the end, meson chose this option.
>>>    However, as can be seen from patch 4, a number now need special handling
>>>    for compatibility
>>>
>>> * This "_PMD" at the end made its way into other device classes, such as
>>>    crypto and event, but it appears that the standard for these classes from
>>>    make is in fact the opposite. Therefore we have had for the last 2+ years
>>>    conflicting macros for crypto, compression and event classes.
>>>
>>> * There is also the question of how important compatibility for these
>>>    macros is, especially since we have had numerous incompatibilities
>>>    without it being reported before. There is also the issue of the
>>>    deprecation process for macros, since these are not part of any ABI.
>>>
>>> What's done in this set:
>>>
>>> * Firstly, and missing dependencies on apps or examples had to be fixed,
>>>    where a dependency was missed because it was never needed due to the code
>>>    being stripped out because of a missing macro.
>>>
>>> * Secondly, since it is likely that use of the defines from make is more
>>>    widespread than those from meson, the defines for the crypto, compression
>>>    and event classes are changed to align with the make values. Just in case
>>>    though, temporary code is added to drivers/meson.build to redefine the
>>>    old meson values too, and a deprecation notice is added for these. The
>>>    hope is that we can then remove this temporary code in the next release,
>>>    leaving us with just one macro style for each driver class.
>>>
>>> * Thirdly, we add an additional set of backward compatibility macros for
>>>    the ~30 special-cases, where the meson macro template does not match that
>>>    defined for make. Again, this is intended to be temporary and a
>>>    deprecation notice is given for the macros in that file.
>>>
>>> * Finally, we replace all instances of the old macros in the codebase with
>>>    the newer versions. While the work done in the first four patches (steps
>>>    1-3 above) should be ok to backport, this final patch is not suitable for
>>>    backporting. However, it is relatively simple to produce a new patch for
>>>    backporting which allow either old or new values to be used in macros.
>>>
>>>
>>> Open issues/considerations after this patch:
>>>
>>> * We still have inconsistencies in our driver macro and naming templates.
>>>    This is just a nice-to-have, but if people are ok with generally having a
>>>    breakage in our macro defines, we could clean this up a lot further.
>>>    Notice how 'net', 'regex' and 'vdpa' have '_PMD' at the end, while most
>>>    others have it before the name. Notice also that many device classes have
>>>    the class at the end of the template, while bbdev has it in the middle.
>>> 	$ git grep config_flag_fmt -- drivers/*/meson.build
>>> 	drivers/baseband/meson.build:config_flag_fmt = 'RTE_LIBRTE_PMD_BBDEV_@0@'
>>> 	drivers/bus/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_BUS'
>>> 	drivers/common/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
>>> 	drivers/compress/meson.build:config_flag_fmt = 'RTE_LIBRTE_PMD_@0@'
>>> 	drivers/crypto/meson.build:config_flag_fmt = 'RTE_LIBRTE_PMD_@0@'
>>> 	drivers/event/meson.build:config_flag_fmt = 'RTE_LIBRTE_PMD_@0@_EVENTDEV'
>>> 	drivers/mempool/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_MEMPOOL'
>>> 	drivers/net/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'
>>> 	drivers/raw/meson.build:config_flag_fmt = 'RTE_LIBRTE_PMD_@0@_RAWDEV'
>>> 	drivers/regex/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'
>>> 	drivers/vdpa/meson.build:config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'
>>
>> As a generic direction I would vote for standard names which are
>> based on directory structure:
>>  - RTE_LIBRTE_ETHDEV
>>  - RTE_DRIVER_NET_SFC
>>  - RTE_DRIVER_COMMON_MLX5
>>  - RTE_DRIVER_BUS_PCI
>>
> 
> Definite +1, and it would be good if we standardized the .so names like
> that too.
> 
> The open question is how much backward compatibility needs to be maintained
> for macros (and also too for .so names)? With this patchset, I've aimed
> very much to keep strict compatibility for now.

I think it is really good. Technically it does not look hard to
provide backward compatibility for macros, so I'd keep it up to
but not including 21.11 (next LTS?). Same for .so names, if it
is not a problem.

If we approve the decision on naming, all new entities must
follow it from the very beginning.

  reply	other threads:[~2020-09-18  9:01 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-16 16:44 Bruce Richardson
2020-09-16 16:44 ` [dpdk-dev] [RFC PATCH 1/5] app: fix missing dependencies Bruce Richardson
2020-09-16 16:44 ` [dpdk-dev] [RFC PATCH 2/5] examples/l2fwd-crypto: fix missing dependency Bruce Richardson
2020-09-16 16:44 ` [dpdk-dev] [RFC PATCH 3/5] meson: fix compatibility with make build defines Bruce Richardson
2020-09-16 16:44 ` [dpdk-dev] [RFC PATCH 4/5] build: add defines for compatibility with make build Bruce Richardson
2020-09-16 16:44 ` [dpdk-dev] [RFC PATCH 5/5] build: replace use of old build macros Bruce Richardson
2020-09-17 17:59 ` [dpdk-dev] [RFC PATCH 0/5] rework feature enabling macros for compatibility Andrew Rybchenko
2020-09-18  8:41   ` Bruce Richardson
2020-09-18  8:59     ` Andrew Rybchenko [this message]
2020-09-18 12:19       ` Ferruh Yigit
2020-09-23 12:46     ` Thomas Monjalon
2020-09-30 16:49       ` Richardson, Bruce
2020-09-30 17:31         ` Thomas Monjalon
2020-09-18 15:12 ` David Marchand
2020-09-30 16:12 ` Ferruh Yigit
2020-09-30 16:19   ` Bruce Richardson
2020-10-02 15:58 ` [dpdk-dev] [RFC PATCH v2 0/8] Rework build macros Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 1/8] app: fix missing dependencies Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 2/8] examples/l2fwd-crypto: fix missing dependency Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 3/8] build: add defines for compatibility with make build Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 4/8] qat: build from common folder Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 5/8] build: remove library name from version map filename Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 6/8] build: standardize component names and defines Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 7/8] build: replace use of old build macros Bruce Richardson
2020-10-02 15:58   ` [dpdk-dev] [RFC PATCH v2 8/8] [v21.02] build: remove compatibility build defines Bruce Richardson
2020-10-14 14:12 ` [dpdk-dev] [PATCH v3 0/7] Rework build macros Bruce Richardson
2020-10-14 14:12   ` [dpdk-dev] [PATCH v3 1/7] app: fix missing dependencies Bruce Richardson
2020-10-15 10:32     ` Luca Boccassi
2020-10-14 14:12   ` [dpdk-dev] [PATCH v3 2/7] examples/l2fwd-crypto: fix missing dependency Bruce Richardson
2020-10-15 10:32     ` Luca Boccassi
2020-10-14 14:13   ` [dpdk-dev] [PATCH v3 3/7] build: add defines for compatibility with make build Bruce Richardson
2020-10-15 10:31     ` Luca Boccassi
2020-10-15 11:20       ` Bruce Richardson
2020-10-14 14:13   ` [dpdk-dev] [PATCH v3 4/7] qat: build from common folder Bruce Richardson
2020-10-15 10:32     ` Luca Boccassi
2020-10-14 14:13   ` [dpdk-dev] [PATCH v3 5/7] build: remove library name from version map filename Bruce Richardson
2020-10-15 10:32     ` Luca Boccassi
2020-10-14 14:13   ` [dpdk-dev] [PATCH v3 6/7] build: standardize component names and defines Bruce Richardson
2020-10-15 10:30     ` Luca Boccassi
2020-10-15 11:18       ` Bruce Richardson
2020-10-15 13:05         ` Luca Boccassi
2020-10-15 14:03           ` Bruce Richardson
2020-10-15 15:32             ` Luca Boccassi
2020-10-15 15:34               ` Bruce Richardson
2020-10-14 14:13   ` [dpdk-dev] [PATCH v3 7/7] build: replace use of old build macros Bruce Richardson
2020-10-15 10:32     ` Luca Boccassi
2020-10-15 11:03 ` [dpdk-dev] [PATCH v4 0/8] Rework " Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 1/8] app: fix missing dependencies Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 2/8] examples/l2fwd-crypto: fix missing dependency Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 3/8] build: add defines for compatibility with make build Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 4/8] qat: build from common folder Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 5/8] build: remove library name from version map filename Bruce Richardson
2020-10-18 11:56     ` Xu, Rosen
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 6/8] devtools/test-null: load all drivers from directory Bruce Richardson
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 7/8] build: standardize component names and defines Bruce Richardson
2020-10-18 11:55     ` Xu, Rosen
2020-10-15 11:03   ` [dpdk-dev] [PATCH v4 8/8] build: replace use of old build macros Bruce Richardson
2020-10-18 11:55     ` Xu, Rosen
2020-10-15 15:05 ` [dpdk-dev] [PATCH v5 0/8] Rework " Bruce Richardson
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 1/8] app: fix missing dependencies Bruce Richardson
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 2/8] examples/l2fwd-crypto: fix missing dependency Bruce Richardson
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 3/8] build: add defines for compatibility with make build Bruce Richardson
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 4/8] qat: build from common folder Bruce Richardson
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 5/8] build: remove library name from version map filename Bruce Richardson
2020-10-15 15:28     ` Andrew Rybchenko
2020-10-19 20:04       ` Thomas Monjalon
2020-10-18  9:24     ` Xu, Rosen
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 6/8] devtools/test-null: load all drivers from directory Bruce Richardson
2020-10-19 16:58     ` Thomas Monjalon
2020-10-20  8:37       ` Bruce Richardson
2020-10-20 10:01         ` Thomas Monjalon
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 7/8] build: standardize component names and defines Bruce Richardson
2020-10-15 15:32     ` Andrew Rybchenko
2020-10-15 15:35     ` Bruce Richardson
2020-10-18  9:21     ` Xu, Rosen
2020-10-15 15:05   ` [dpdk-dev] [PATCH v5 8/8] build: replace use of old build macros Bruce Richardson
2020-10-15 15:34     ` Andrew Rybchenko
2020-10-18  9:23     ` Xu, Rosen
2020-10-19 19:03     ` Thomas Monjalon
2020-10-19 20:27   ` [dpdk-dev] [PATCH v5 0/8] Rework " Thomas Monjalon
2020-10-20  7:17     ` David Marchand
2020-10-20  8:37       ` Bruce Richardson

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=2e1310d7-4e94-40f1-b5eb-ed827645be0b@solarflare.com \
    --to=arybchenko@solarflare.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    /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).