From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: Thomas Monjalon <thomas@monjalon.net>,
Chengwen Feng <fengchengwen@huawei.com>,
Kevin Laatz <kevin.laatz@intel.com>,
Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH v4 2/5] dmadev: avoid copies in tracepoints
Date: Tue, 4 Mar 2025 17:06:30 +0100 [thread overview]
Message-ID: <20250304160633.385185-3-david.marchand@redhat.com> (raw)
In-Reply-To: <20250304160633.385185-1-david.marchand@redhat.com>
No need to copy values in intermediate variables.
Use the right trace point emitters.
Update the pcie struct to avoid aliasing warning.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since v3:
- added anonymous union around pcie struct (which triggered an abidiff
warning that needs waiving) and kept original call to
rte_trace_point_emit_u64,
Changes since v2:
- split this change into multiple changes,
only kept trivial parts in this patch,
---
devtools/libabigail.abignore | 5 +++++
lib/dmadev/rte_dmadev.h | 29 ++++++++++++++++-------------
lib/dmadev/rte_dmadev_trace.h | 20 ++++++--------------
3 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
index ce501632b3..88aa1ec981 100644
--- a/devtools/libabigail.abignore
+++ b/devtools/libabigail.abignore
@@ -36,3 +36,8 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Temporary exceptions till next major ABI version ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+[suppress_type]
+ name = rte_dma_port_param
+ type_kind = struct
+ has_size_change = no
+ has_data_member = {pcie}
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 2f9304a9db..26f9d4b095 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -523,19 +523,22 @@ struct rte_dma_port_param {
* and capabilities.
*/
__extension__
- struct {
- uint64_t coreid : 4; /**< PCIe core id used. */
- uint64_t pfid : 8; /**< PF id used. */
- uint64_t vfen : 1; /**< VF enable bit. */
- uint64_t vfid : 16; /**< VF id used. */
- /** The pasid filed in TLP packet. */
- uint64_t pasid : 20;
- /** The attributes filed in TLP packet. */
- uint64_t attr : 3;
- /** The processing hint filed in TLP packet. */
- uint64_t ph : 2;
- /** The steering tag filed in TLP packet. */
- uint64_t st : 16;
+ union {
+ struct {
+ uint64_t coreid : 4; /**< PCIe core id used. */
+ uint64_t pfid : 8; /**< PF id used. */
+ uint64_t vfen : 1; /**< VF enable bit. */
+ uint64_t vfid : 16; /**< VF id used. */
+ /** The pasid filed in TLP packet. */
+ uint64_t pasid : 20;
+ /** The attributes filed in TLP packet. */
+ uint64_t attr : 3;
+ /** The processing hint filed in TLP packet. */
+ uint64_t ph : 2;
+ /** The steering tag filed in TLP packet. */
+ uint64_t st : 16;
+ };
+ uint64_t val;
} pcie;
};
uint64_t reserved[2]; /**< Reserved for future fields. */
diff --git a/lib/dmadev/rte_dmadev_trace.h b/lib/dmadev/rte_dmadev_trace.h
index be089c065c..1beb938168 100644
--- a/lib/dmadev/rte_dmadev_trace.h
+++ b/lib/dmadev/rte_dmadev_trace.h
@@ -46,11 +46,10 @@ RTE_TRACE_POINT(
const struct rte_dma_conf __dev_conf = {0};
dev_conf = &__dev_conf;
#endif /* _RTE_TRACE_POINT_REGISTER_H_ */
- int enable_silent = (int)dev_conf->enable_silent;
rte_trace_point_emit_i16(dev_id);
rte_trace_point_emit_u16(dev_conf->nb_vchans);
rte_trace_point_emit_u16(dev_conf->priority);
- rte_trace_point_emit_int(enable_silent);
+ rte_trace_point_emit_u8(dev_conf->enable_silent);
rte_trace_point_emit_int(ret);
)
@@ -83,21 +82,14 @@ RTE_TRACE_POINT(
const struct rte_dma_vchan_conf __conf = {0};
conf = &__conf;
#endif /* _RTE_TRACE_POINT_REGISTER_H_ */
- int src_port_type = conf->src_port.port_type;
- int dst_port_type = conf->dst_port.port_type;
- int direction = conf->direction;
- uint64_t src_pcie_cfg;
- uint64_t dst_pcie_cfg;
rte_trace_point_emit_i16(dev_id);
rte_trace_point_emit_u16(vchan);
- rte_trace_point_emit_int(direction);
+ rte_trace_point_emit_int(conf->direction);
rte_trace_point_emit_u16(conf->nb_desc);
- rte_trace_point_emit_int(src_port_type);
- memcpy(&src_pcie_cfg, &conf->src_port.pcie, sizeof(uint64_t));
- rte_trace_point_emit_u64(src_pcie_cfg);
- memcpy(&dst_pcie_cfg, &conf->dst_port.pcie, sizeof(uint64_t));
- rte_trace_point_emit_int(dst_port_type);
- rte_trace_point_emit_u64(dst_pcie_cfg);
+ rte_trace_point_emit_int(conf->src_port.port_type);
+ rte_trace_point_emit_u64(conf->src_port.pcie.val);
+ rte_trace_point_emit_int(conf->dst_port.port_type);
+ rte_trace_point_emit_u64(conf->dst_port.pcie.val);
rte_trace_point_emit_ptr(conf->auto_free.m2d.pool);
rte_trace_point_emit_int(ret);
)
--
2.48.1
next prev parent reply other threads:[~2025-03-04 16:07 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-24 16:14 [PATCH 1/2] trace: support expression for blob length David Marchand
2025-01-24 16:14 ` [PATCH 2/2] dmadev: avoid copies in tracepoints David Marchand
2025-01-27 8:25 ` [EXTERNAL] [PATCH 1/2] trace: support expression for blob length Jerin Jacob
2025-01-30 14:58 ` [PATCH v2 1/3] " David Marchand
2025-01-30 14:58 ` [PATCH v2 2/3] dmadev: avoid copies in tracepoints David Marchand
2025-01-30 14:58 ` [PATCH v2 3/3] trace: fix undefined behavior in register David Marchand
2025-01-30 19:10 ` Stephen Hemminger
2025-01-30 21:06 ` David Marchand
2025-02-07 8:49 ` David Marchand
2025-02-07 11:39 ` [EXTERNAL] " Sunil Kumar Kori
2025-02-10 9:02 ` Sunil Kumar Kori
2025-02-10 9:36 ` David Marchand
2025-02-10 13:37 ` [EXTERNAL] " Jerin Jacob
2025-02-10 14:04 ` David Marchand
2025-02-10 13:38 ` [EXTERNAL] [PATCH v2 1/3] trace: support expression for blob length Jerin Jacob
2025-02-10 17:44 ` [PATCH v3 0/6] Trace point framework enhancement for dmadev David Marchand
2025-02-10 17:44 ` [PATCH v3 1/6] ci: check traces validity David Marchand
2025-02-10 17:44 ` [PATCH v3 2/6] trace: support dereferencing arguments David Marchand
2025-02-11 8:44 ` [EXTERNAL] " Sunil Kumar Kori
2025-02-11 9:53 ` David Marchand
2025-02-12 5:08 ` Sunil Kumar Kori
2025-02-10 17:44 ` [PATCH v3 3/6] trace: support expression for blob length David Marchand
2025-02-10 17:44 ` [PATCH v3 4/6] trace: support dumping binary inside a struct David Marchand
2025-02-11 8:52 ` [EXTERNAL] " Sunil Kumar Kori
2025-02-11 9:54 ` David Marchand
2025-02-12 5:14 ` Sunil Kumar Kori
2025-02-18 14:28 ` David Marchand
2025-02-19 11:17 ` Jerin Jacob
2025-02-10 17:44 ` [PATCH v3 5/6] dmadev: avoid copies in tracepoints David Marchand
2025-02-10 17:44 ` [PATCH v3 6/6] trace: fix undefined behavior in register David Marchand
2025-02-11 8:41 ` [EXTERNAL] [PATCH v3 0/6] Trace point framework enhancement for dmadev Sunil Kumar Kori
2025-03-04 16:06 ` [PATCH v4 0/5] " David Marchand
2025-03-04 16:06 ` [PATCH v4 1/5] ci: check traces validity David Marchand
2025-03-04 16:06 ` David Marchand [this message]
2025-03-04 16:06 ` [PATCH v4 3/5] trace: support dereferencing pointers David Marchand
2025-03-04 16:06 ` [PATCH v4 4/5] trace: support expression for blob length David Marchand
2025-03-04 16:06 ` [PATCH v4 5/5] trace: fix undefined behavior in register David Marchand
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=20250304160633.385185-3-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=fengchengwen@huawei.com \
--cc=kevin.laatz@intel.com \
--cc=thomas@monjalon.net \
/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).