From: Bruce Richardson <bruce.richardson@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: <dev@dpdk.org>
Subject: Re: [PATCH v2 00/68] reduce use of rte_memcpy
Date: Fri, 11 Sep 2026 11:06:04 +0100 [thread overview]
Message-ID: <aqPSjAonmnLRwr5-@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <20260821192646.146382-1-stephen@networkplumber.org>
On Fri, Aug 21, 2026 at 12:23:55PM -0700, Stephen Hemminger wrote:
> The DPDK function rte_memcpy() only exists as an optimization
> for shortcomings in performance of libc memcpy() on some platforms.
> Many platforms have no special rte_memcpy() and just use memcpy().
>
> But many analysis and test tools know that memcpy() is a special
> case and check for overwrite, bounds errors etc. Therefore memcpy()
> should be preferred where ever possible.
>
> This patch series introduces a coccinelle script to find
> calls to rte_memcpy() where size is fixed, and change them to
> regular memcpy(). Many of the patch series is just the results
> of that script.
>
> There is also some cleanups to include rte_memcpy.h where it
> was not being done before; the include was happening by some other header.
> And also removal of rte_memcpy.h where no longer needed.
>
> The result is a 45% reduction in use of rte_memcpy (1008 call
> sites down to 551). The leftover cases are places where rte_memcpy
> is used in data path; and test code for rte_memcpy.
>
> v2:
> - reorder the series so it bisects cleanly: the patches adding
> the missing includes of rte_memcpy.h now come first, before
> any patch that removes an include or replaces a call. In v1
> those were at the end of the series, so intermediate commits
> could fail to build.
> - move the documentation patch describing when to use
> rte_memcpy() to the front of the series, so the rationale for
> the rest of the changes is established first.
>
I like this series, and the rework of the order in v2 is ok, but I actually
think the patchset should be split - at least into 2, if not more.
The patches removing the unnecessary include of rte_memcpy from C files
should be split out into a separate patchset. There are a number of these
in the series, and many have an incorrect patch title and description, a
couple of which I flagged (I was working backward through the patchset -
don't ask why, cos I don't know!). That patchset is a trivial review and
merge case, since if it builds it's fine.
That then cuts down the rest of the set by a bit, making it more trackable.
If possible, I'd actually like to see another patchset separated out to
cover the case where you replace all constant-sized rte_memcpy calls, which
use sizeof, with regular memcpy. Having all patches doing the same thing
again makes it trivial to review and ack.
That would then leave the rest of the changes which require more
examination - where we are replacing a non-constant copy using rte_memcpy
with a memcpy. That's where the focus needs to be for review.
Just my 2c. I think having a 68-patch set in one is too big.
/Bruce
next prev parent reply other threads:[~2026-09-11 10:06 UTC|newest]
Thread overview: 169+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 5:11 [PATCH 00/61] reduce use of rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 01/61] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 02/61] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 03/61] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-20 6:22 ` Morten Brørup
2026-08-20 16:22 ` Stephen Hemminger
2026-08-21 6:37 ` Morten Brørup
2026-08-20 5:11 ` [PATCH 04/61] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 05/61] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-20 5:11 ` [PATCH 06/61] acl: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 07/61] drivers/bus: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 08/61] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 09/61] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 10/61] net: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 11/61] pdcp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 12/61] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 13/61] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-20 5:12 ` [PATCH 14/61] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 15/61] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 16/61] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 17/61] net/af_xdp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 18/61] net/avp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 19/61] net/axgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 20/61] net/bnx2x: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 21/61] net/bnxt: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 22/61] net/bonding: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 23/61] net/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 24/61] net/cxgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 25/61] net/dpaa2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 26/61] net/enic: " Stephen Hemminger
2026-08-20 9:05 ` Hyong Youb Kim (hyonkim)
2026-08-20 5:12 ` [PATCH 27/61] net/failsafe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 28/61] net/gve: " Stephen Hemminger
2026-08-20 20:42 ` Joshua Washington
2026-08-20 5:12 ` [PATCH 29/61] net/hinic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 30/61] net/hns3: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 31/61] net/mlx5: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 32/61] net/mvpp2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 33/61] net/netvsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 34/61] net/nfp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 35/61] net/ngbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 36/61] net/ntnic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 37/61] net/null: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 38/61] net/qede: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 39/61] net/ring: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 40/61] net/sfc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 41/61] net/txgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 42/61] net/vhost: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 43/61] net/virtio: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 44/61] net/sxe2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 45/61] net/zxdh: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 46/61] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 47/61] net/ice: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 48/61] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-08-20 5:12 ` [PATCH 49/61] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 50/61] ml/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 51/61] drivers/event: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 52/61] baseband/la12xx: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 53/61] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 54/61] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 55/61] hash: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 56/61] rib: remove rte_memcpy include Stephen Hemminger
2026-08-20 5:12 ` [PATCH 57/61] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 58/61] efd: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 59/61] net/xsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 60/61] net/pcap: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 61/61] power: " Stephen Hemminger
2026-08-20 7:31 ` [PATCH 00/61] reduce " Morten Brørup
2026-08-20 8:16 ` Bruce Richardson
2026-08-20 8:46 ` Konstantin Ananyev
2026-08-20 9:03 ` Morten Brørup
2026-08-20 13:07 ` Konstantin Ananyev
2026-08-20 14:00 ` Morten Brørup
2026-08-20 20:13 ` Stephen Hemminger
2026-08-20 20:16 ` Stephen Hemminger
2026-08-20 20:18 ` Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 00/68] " Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 01/68] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 02/68] lib: add missing include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 03/68] net: " Stephen Hemminger
2026-09-11 9:38 ` Dariusz Sosnowski
2026-08-21 19:23 ` [PATCH v2 04/68] crypto: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 05/68] drivers: " Stephen Hemminger
2026-09-11 9:39 ` Dariusz Sosnowski
2026-08-21 19:24 ` [PATCH v2 06/68] app: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 07/68] examples: " Stephen Hemminger
2026-08-24 3:07 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 08/68] eal: document when to use rte_memcpy Stephen Hemminger
2026-08-24 3:08 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 09/68] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-24 3:12 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 10/68] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 11/68] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 12/68] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 13/68] acl: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 14/68] drivers/bus: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 15/68] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 16/68] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-24 3:02 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 17/68] net: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 18/68] pdcp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 19/68] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 20/68] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-24 2:45 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 21/68] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 22/68] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 23/68] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 24/68] net/af_xdp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 25/68] net/avp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 26/68] net/axgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 27/68] net/bnx2x: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 28/68] net/bnxt: " Stephen Hemminger
2026-08-24 16:58 ` Kishore Padmanabha
2026-08-21 19:24 ` [PATCH v2 29/68] net/bonding: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 30/68] net/cnxk: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 31/68] net/cxgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 32/68] net/dpaa2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 33/68] net/enic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 34/68] net/failsafe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 35/68] net/gve: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 36/68] net/hinic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 37/68] net/hns3: " Stephen Hemminger
2026-08-24 2:42 ` fengchengwen
2026-08-21 19:24 ` [PATCH v2 38/68] net/mlx5: " Stephen Hemminger
2026-09-11 9:41 ` Dariusz Sosnowski
2026-08-21 19:24 ` [PATCH v2 39/68] net/mvpp2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 40/68] net/netvsc: " Stephen Hemminger
2026-08-21 20:08 ` [EXTERNAL] " Long Li
2026-08-21 19:24 ` [PATCH v2 41/68] net/nfp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 42/68] net/ngbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 43/68] net/ntnic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 44/68] net/null: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 45/68] net/qede: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 46/68] net/ring: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 47/68] net/sfc: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 48/68] net/txgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 49/68] net/vhost: " Stephen Hemminger
2026-09-11 9:58 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 50/68] net/virtio: " Stephen Hemminger
2026-09-11 9:55 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 51/68] net/sxe2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 52/68] net/zxdh: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 53/68] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-09-11 9:54 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 54/68] net/ice: " Stephen Hemminger
2026-09-11 9:47 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 55/68] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-09-11 9:53 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 56/68] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 57/68] ml/cnxk: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 58/68] drivers/event: " Stephen Hemminger
2026-09-11 9:50 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 59/68] baseband/la12xx: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 60/68] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 61/68] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 62/68] hash: replace use of rte_memcpy Stephen Hemminger
2026-09-11 9:53 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 63/68] rib: remove rte_memcpy include Stephen Hemminger
2026-09-11 9:52 ` Bruce Richardson
2026-08-21 19:24 ` [PATCH v2 64/68] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-09-11 9:51 ` Bruce Richardson
2026-08-21 19:25 ` [PATCH v2 65/68] efd: " Stephen Hemminger
2026-09-11 9:51 ` Bruce Richardson
2026-08-21 19:25 ` [PATCH v2 66/68] net/xsc: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 67/68] net/pcap: " Stephen Hemminger
2026-09-11 9:51 ` Bruce Richardson
2026-08-21 19:25 ` [PATCH v2 68/68] power: " Stephen Hemminger
2026-09-11 10:06 ` Bruce Richardson [this message]
2026-09-11 10:18 ` [PATCH v2 00/68] reduce " 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=aqPSjAonmnLRwr5-@bricha3-mobl1.ger.corp.intel.com \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=stephen@networkplumber.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