From: Stephen Hemminger <stephen@networkplumber.org>
To: "Mattias Rönnblom" <mattias.ronnblom@ericsson.com>
Cc: dev@dpdk.org, "Mattias Rönnblom" <hofors@lysator.liu.se>,
"Morten Brørup" <mb@smartsharesystems.com>,
"David Marchand" <david.marchand@redhat.com>,
"Pavan Nikhilesh" <pbhagavatula@marvell.com>,
"Bruce Richardson" <bruce.richardson@intel.com>
Subject: Re: [PATCH v6 0/7] Optionally have rte_memcpy delegate to compiler memcpy
Date: Thu, 22 Jan 2026 22:01:42 -0800 [thread overview]
Message-ID: <20260122220142.21bda930@phoenix.local> (raw)
In-Reply-To: <20240920102716.738940-1-mattias.ronnblom@ericsson.com>
On Fri, 20 Sep 2024 12:27:09 +0200
Mattias Rönnblom <mattias.ronnblom@ericsson.com> wrote:
> This patch set make DPDK library, driver, and application code
> optionally use the compiler/libc memcpy() when functions in
> <rte_memcpy.h> are invoked.
>
> The new compiler memcpy-based rte_memcpy() implementations may be
> enabled by means of a build-time option.
>
> This patch set only make a difference on x86, PPC and ARM. Loongarch
> and RISCV already used compiler/libc memcpy().
>
> This patch set includes a number of fixes in drivers and libraries
> which errornously relied on <rte_memcpy.h> including header files
> (i.e., <rte_vect.h>) required by its implementation.
>
> Mattias Rönnblom (7):
> event/dlb2: include headers for vector and memory copy APIs
> net/octeon_ep: add missing vector API header include
> distributor: add missing vector API header include
> fib: add missing vector API header include
> eal: provide option to use compiler memcpy instead of RTE
> ci: test compiler memcpy
> vhost: optimize memcpy routines when cc memcpy is used
>
> .ci/linux-build.sh | 5 +++
> .github/workflows/build.yml | 7 +++
> config/meson.build | 1 +
> devtools/test-meson-builds.sh | 4 +-
> doc/guides/rel_notes/release_24_11.rst | 20 +++++++++
> drivers/event/dlb2/dlb2.c | 2 +
> drivers/net/octeon_ep/otx_ep_ethdev.c | 2 +
> lib/distributor/rte_distributor.c | 1 +
> lib/eal/arm/include/rte_memcpy.h | 9 ++++
> lib/eal/include/generic/rte_memcpy.h | 61 +++++++++++++++++++++++---
> lib/eal/loongarch/include/rte_memcpy.h | 54 +----------------------
> lib/eal/ppc/include/rte_memcpy.h | 9 ++++
> lib/eal/riscv/include/rte_memcpy.h | 54 +----------------------
> lib/eal/x86/include/meson.build | 1 +
> lib/eal/x86/include/rte_memcpy.h | 9 ++++
> lib/fib/trie.c | 1 +
> lib/vhost/virtio_net.c | 37 +++++++++++++++-
> meson_options.txt | 2 +
> 18 files changed, 165 insertions(+), 114 deletions(-)
>
AI code review had useful feedback on this. Please address.
## Overall Assessment
### Errors (Must Fix)
1. **Patch 6/7**: Copy-paste error in `.ci/linux-build.sh` - both if branches set `use_cc_memcpy=true`
### Warnings (Should Fix)
1. **Patch 2/7**: Include order could be improved for consistency
2. **Patch 5/7**: Long line in meson_options.txt description
3. **Patch 5/7**: Extra blank line in release notes before "Removed Items"
### Info (Consider)
- All patches have proper Signed-off-by tags
- Subject lines are within 60 character limit
- Commit messages are well-written and explain the rationale
- Proper use of Acked-by tags from reviewers
The critical bug in Patch 6/7 should be fixed before merging - the else branch should set `-Duse_cc_memcpy=false` instead of `true`.
--- Full Report ---
=== Patch Review: bundle-1682-opt-memcpy.mbox (via Claude) ===
# DPDK Patch Review: bundle-1682-opt-memcpy.mbox
This patch series adds an option to use compiler memcpy instead of DPDK's custom implementation, along with several prerequisite fixes for missing header includes.
---
## Summary
The patch series contains 7 patches:
1. event/dlb2: include headers for vector and memory copy APIs
2. net/octeon_ep: add missing vector API header include
3. distributor: add missing vector API header include
4. fib: add missing vector API header include
5. eal: provide option to use compiler memcpy instead of RTE
6. ci: test compiler memcpy
7. vhost: optimize memcpy routines when cc memcpy is used
---
## Patch 1/7: event/dlb2: include headers for vector and memory copy APIs
### Info
- Well-structured commit message explaining the issue and fix
- Proper Signed-off-by and Acked-by tags
- Correctly formatted subject line
### No Issues Found
This patch is clean and follows guidelines.
---
## Patch 2/7: net/octeon_ep: add missing vector API header include
### Warning
**Include order issue**: The `<rte_vect.h>` include is placed after `<ethdev_pci.h>`, but according to AGENTS.md guidelines, DPDK EAL includes should come before DPDK misc library includes, and there should be a blank line separating groups.
```c
#include <inttypes.h>
#include <ethdev_pci.h>
#include <rte_vect.h>
```
Consider placing `<rte_vect.h>` in the proper order relative to other DPDK includes.
### No Other Issues Found
Otherwise clean patch.
---
## Patch 3/7: distributor: add missing vector API header include
### Info
- Clean patch with proper formatting
### No Issues Found
This patch is clean and follows guidelines.
---
## Patch 4/7: fib: add missing vector API header include
### Info
- Clean patch with proper formatting
### No Issues Found
This patch is clean and follows guidelines.
---
## Patch 5/7: eal: provide option to use compiler memcpy instead of RTE
### Error
**Release notes formatting issue**: The release notes have an extra blank line after the "destination buffers)." line:
```rst
destination buffers).
<-- extra blank line here
Removed Items
```
The blank line should be removed or the section should end properly before "Removed Items".
### Warning
**Line length in meson_options.txt**: The description line for `use_cc_memcpy` may exceed typical line length conventions:
```python
option('use_cc_memcpy', type: 'boolean', value: false, description:
'Have the functions of <rte_memcpy.h> delegate to compiler/libc memcpy() instead of using custom implementation.')
```
This is a long line (approximately 119 characters). Consider breaking it.
### Info
- Good use of `#ifdef __cplusplus` guards in generic/rte_memcpy.h
- Proper SPDX identifiers maintained
- Good documentation in release notes
---
## Patch 6/7: ci: test compiler memcpy
### Error
**Copy-paste error in linux-build.sh**: Both branches of the if statement set the same value:
```bash
if [ "$CCMEMCPY" = "true" ]; then
OPTS="$OPTS -Duse_cc_memcpy=true"
else
OPTS="$OPTS -Duse_cc_memcpy=true" # <-- Should be false
fi
```
The `else` branch should set `-Duse_cc_memcpy=false`.
### Info
- Good addition of CI coverage for the new feature
---
## Patch 7/7: vhost: optimize memcpy routines when cc memcpy is used
### Warning
**Brace style inconsistency**: The `if-else` statement uses braces for the `if` block but not for the `else` block:
```c
if (len <= 256) {
size_t left;
for (left = len; left >= 32; left -= 32) {
memcpy(dst, src, 32);
dst = RTE_PTR_ADD(dst, 32);
src = RTE_PTR_ADD(src, 32);
}
memcpy(dst, src, left);
} else
memcpy(dst, src, len);
```
According to DPDK coding style, when one branch has braces, consistency suggests the other should too, or both should be without braces if they're single statements. However, the DPDK guidelines show examples where this mixed style is acceptable.
### Info
- Good performance documentation in the commit message
- Proper use of `__rte_always_inline`
- Good use of `restrict` keyword
- Appropriate use of `__builtin_assume_aligned`
- Well-documented rationale for the optimization
### No Other Issues Found
This patch is otherwise clean.
---
## Overall Assessment
### Errors (Must Fix)
1. **Patch 6/7**: Copy-paste error in `.ci/linux-build.sh` - both if branches set `use_cc_memcpy=true`
### Warnings (Should Fix)
1. **Patch 2/7**: Include order could be improved for consistency
2. **Patch 5/7**: Long line in meson_options.txt description
3. **Patch 5/7**: Extra blank line in release notes before "Removed Items"
### Info (Consider)
- All patches have proper Signed-off-by tags
- Subject lines are within 60 character limit
- Commit messages are well-written and explain the rationale
- Proper use of Acked-by tags from reviewers
The critical bug in Patch 6/7 should be fixed before merging - the else branch should set `-Duse_cc_memcpy=false` instead of `true`.
next prev parent reply other threads:[~2026-01-23 6:01 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-27 11:11 [RFC] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-05-28 7:43 ` [RFC v2] " Mattias Rönnblom
2024-05-28 8:19 ` Mattias Rönnblom
2024-05-28 8:27 ` Bruce Richardson
2024-05-28 8:59 ` Mattias Rönnblom
2024-05-28 9:07 ` Morten Brørup
2024-05-28 16:17 ` Mattias Rönnblom
2024-05-28 14:59 ` Stephen Hemminger
2024-05-28 15:09 ` Bruce Richardson
2024-05-31 5:19 ` Mattias Rönnblom
2024-05-31 16:50 ` Stephen Hemminger
2024-06-02 11:33 ` Mattias Rönnblom
2024-05-28 16:03 ` Mattias Rönnblom
2024-05-29 21:55 ` Stephen Hemminger
2024-05-28 8:20 ` Bruce Richardson
2024-06-02 12:39 ` [RFC v3 0/5] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-06-02 12:39 ` [RFC v3 1/5] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-06-05 6:49 ` [PATCH 0/5] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-06-05 6:49 ` [PATCH 1/5] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-06-05 6:49 ` [PATCH 2/5] net/octeon_ep: properly include vector API header file Mattias Rönnblom
2024-06-05 6:49 ` [PATCH 3/5] distributor: " Mattias Rönnblom
2024-06-10 14:27 ` Tyler Retzlaff
2024-06-05 6:49 ` [PATCH 4/5] fib: " Mattias Rönnblom
2024-06-10 14:28 ` Tyler Retzlaff
2024-06-05 6:49 ` [PATCH 5/5] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-06-20 7:24 ` [PATCH v2 0/6] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-06-20 7:24 ` [PATCH v2 1/6] net/fm10k: add missing intrinsic include Mattias Rönnblom
2024-06-20 9:02 ` Bruce Richardson
2024-06-20 9:28 ` Bruce Richardson
2024-06-20 11:40 ` Mattias Rönnblom
2024-06-20 11:59 ` Bruce Richardson
2024-06-20 11:50 ` [PATCH v3 0/6] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 1/6] net/fm10k: add missing vector API header include Mattias Rönnblom
2024-06-20 12:34 ` Bruce Richardson
2024-06-20 17:57 ` [PATCH v4 00/13] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 01/13] net/i40e: add missing vector API header include Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 0/6] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 1/6] net/octeon_ep: add missing vector API header include Mattias Rönnblom
2024-09-20 10:27 ` [PATCH v6 0/7] Optionally have rte_memcpy delegate to compiler memcpy Mattias Rönnblom
2024-09-20 10:27 ` [PATCH v6 1/7] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-10-09 20:59 ` Morten Brørup
2024-10-09 22:01 ` Stephen Hemminger
2024-09-20 10:27 ` [PATCH v6 2/7] net/octeon_ep: add missing vector API header include Mattias Rönnblom
2024-10-09 21:00 ` Morten Brørup
2024-09-20 10:27 ` [PATCH v6 3/7] distributor: " Mattias Rönnblom
2024-10-09 21:00 ` Morten Brørup
2024-09-20 10:27 ` [PATCH v6 4/7] fib: " Mattias Rönnblom
2024-10-09 21:00 ` Morten Brørup
2024-09-20 10:27 ` [PATCH v6 5/7] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-10-04 7:52 ` David Marchand
2024-10-04 9:21 ` Mattias Rönnblom
2024-10-04 9:54 ` David Marchand
2024-10-04 12:07 ` Thomas Monjalon
2024-10-04 9:27 ` Mattias Rönnblom
2024-09-20 10:27 ` [PATCH v6 6/7] ci: test compiler memcpy Mattias Rönnblom
2024-10-04 7:56 ` David Marchand
2024-10-09 21:04 ` Morten Brørup
2024-09-20 10:27 ` [PATCH v6 7/7] vhost: optimize memcpy routines when cc memcpy is used Mattias Rönnblom
2024-10-03 11:46 ` Maxime Coquelin
2024-10-09 21:25 ` Morten Brørup
2024-10-10 10:29 ` Mattias Rönnblom
2024-10-09 21:57 ` Stephen Hemminger
2024-10-10 10:35 ` Mattias Rönnblom
2026-01-23 6:01 ` Stephen Hemminger [this message]
2024-07-24 7:53 ` [PATCH v5 2/6] distributor: add missing vector API header include Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 3/6] fib: " Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 4/6] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 5/6] ci: test compiler memcpy Mattias Rönnblom
2024-07-24 7:53 ` [PATCH v5 6/6] vhost: optimize memcpy routines when cc memcpy is used Mattias Rönnblom
2024-07-29 11:00 ` Morten Brørup
2024-07-29 19:27 ` Mattias Rönnblom
2024-07-29 19:56 ` Morten Brørup
2024-06-20 17:57 ` [PATCH v4 02/13] net/iavf: add missing vector API header include Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 03/13] net/ice: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 04/13] net/ixgbe: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 05/13] net/ngbe: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 06/13] net/txgbe: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 07/13] net/virtio: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 08/13] net/fm10k: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 09/13] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 10/13] net/octeon_ep: add missing vector API header include Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 11/13] distributor: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 12/13] fib: " Mattias Rönnblom
2024-06-20 17:57 ` [PATCH v4 13/13] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-06-21 15:19 ` Stephen Hemminger
2024-06-24 10:05 ` Thomas Monjalon
2024-06-24 17:56 ` Mattias Rönnblom
2024-06-25 13:06 ` Mattias Rönnblom
2024-06-25 13:34 ` Thomas Monjalon
2024-06-20 18:53 ` [PATCH v4 00/13] Optionally have rte_memcpy delegate to compiler memcpy Morten Brørup
2024-06-21 6:56 ` Mattias Rönnblom
2024-06-21 7:04 ` David Marchand
2024-06-21 7:35 ` Mattias Rönnblom
2024-06-21 7:41 ` David Marchand
2024-06-25 15:29 ` Maxime Coquelin
2024-06-25 15:44 ` Stephen Hemminger
2024-06-25 19:27 ` Mattias Rönnblom
2024-06-26 8:37 ` Maxime Coquelin
2024-06-26 14:58 ` Stephen Hemminger
2024-06-26 15:24 ` Maxime Coquelin
2024-06-26 18:47 ` Mattias Rönnblom
2024-06-26 20:16 ` Morten Brørup
2024-06-27 11:06 ` Mattias Rönnblom
2024-06-27 15:10 ` Stephen Hemminger
2024-06-27 15:23 ` Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 2/6] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 3/6] net/octeon_ep: add missing vector API header include Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 4/6] distributor: " Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 5/6] fib: " Mattias Rönnblom
2024-06-20 11:50 ` [PATCH v3 6/6] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-06-20 7:24 ` [PATCH v2 2/6] event/dlb2: include headers for vector and memory copy APIs Mattias Rönnblom
2024-06-20 9:03 ` Bruce Richardson
2024-06-20 7:24 ` [PATCH v2 3/6] net/octeon_ep: properly include vector API header file Mattias Rönnblom
2024-06-20 14:43 ` Stephen Hemminger
2024-06-20 7:24 ` [PATCH v2 4/6] distributor: " Mattias Rönnblom
2024-06-20 9:13 ` Bruce Richardson
2024-06-20 7:24 ` [PATCH v2 5/6] fib: " Mattias Rönnblom
2024-06-20 9:14 ` Bruce Richardson
2024-06-20 14:43 ` Stephen Hemminger
2024-06-20 7:24 ` [PATCH v2 6/6] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-06-02 12:39 ` [RFC v3 2/5] net/octeon_ep: properly include vector API header file Mattias Rönnblom
2024-06-02 12:39 ` [RFC v3 3/5] distributor: " Mattias Rönnblom
2024-06-02 12:39 ` [RFC v3 4/5] fib: " Mattias Rönnblom
2024-06-02 12:39 ` [RFC v3 5/5] eal: provide option to use compiler memcpy instead of RTE Mattias Rönnblom
2024-06-02 20:58 ` Morten Brørup
2024-06-03 17:04 ` Mattias Rönnblom
2024-06-03 17:08 ` Stephen Hemminger
2024-05-29 21:56 ` [RFC] " Stephen Hemminger
2024-06-02 11:30 ` Mattias Rönnblom
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=20260122220142.21bda930@phoenix.local \
--to=stephen@networkplumber.org \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=hofors@lysator.liu.se \
--cc=mattias.ronnblom@ericsson.com \
--cc=mb@smartsharesystems.com \
--cc=pbhagavatula@marvell.com \
/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