GDP plugin support patches#11626
Open
Artemy-Mellanox wants to merge 4 commits into
Open
Conversation
Add two opt-in fields to uct_ib_mlx5_qp_attr_t for QPs whose send doorbell is rung from a DPA thread: - sq_no_dbr: create the QP with qpc.send_dbr_mode = NO_DBR_INT and register no send doorbell-record umem (skip dbr_addr/dbr_umem_id), so the NIC does not read the SQ dbr. Required when the dbr lives in DPA memory the NIC cannot read; the producer rings the DB register only. Assumes no RQ. - uar_page_id: override the QPC uar_page (0 = worker UAR). The DPA thread rings via flexio_dev_qp_sq_ring_db() through its outbox, which maps the FlexIO process UAR, so the QP's uar_page must match that UAR (not the host worker's) for the doorbell to drive the QP. Both default off, so existing QPs are unchanged. Adds the send_dbr_mode qpc field/enum to the IFC header (carved out of reserved_at_80, layout preserved). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
152755c to
464dd21
Compare
rakhmets
reviewed
Jul 9, 2026
| @@ -1,28 +1,6 @@ | |||
| # | |||
| # Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. | |||
Contributor
There was a problem hiding this comment.
Suggested change
| # Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED. | |
| # Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2026. ALL RIGHTS RESERVED. |
| UCT_IB_MLX5_QPC_SQ_DBR_VALID = 0x0, | ||
| UCT_IB_MLX5_QPC_SQ_NO_DBR_EXT = 0x1, | ||
| UCT_IB_MLX5_QPC_SQ_NO_DBR_INT = 0x2 | ||
| }; |
|
|
||
|
|
||
| template<ucs_device_level_t level> | ||
| UCS_F_DEVICE void uct_dev_exec_init(unsigned &lane_id, unsigned &num_lanes) |
Contributor
There was a problem hiding this comment.
please consider returning struct with two fields instead.
Contributor
Author
There was a problem hiding this comment.
this may prevent registers use
| uct_dev_exec_init<level>(lane_id, num_lanes); | ||
|
|
||
| if (lane_id == 0) { | ||
| long long depth = UCS_BIT(ep->log_depth); |
|
|
||
| for (;;) { | ||
| unsigned long long ci = READ_ONCE(*ep->ci); | ||
| if ((long long)(pi - ci) >= depth) { |
| } | ||
|
|
||
| if (status == UCS_INPROGRESS) { | ||
| uint32_t slot = pi & UCS_MASK(ep->log_depth); |
Comment on lines
+68
to
+69
| status = (ucs_status_t)uct_dev_bcast<level>((int)status, lane_id); | ||
| return status; |
Contributor
There was a problem hiding this comment.
Suggested change
| status = (ucs_status_t)uct_dev_bcast<level>((int)status, lane_id); | |
| return status; | |
| return static_cast<ucs_status_t>(uct_dev_bcast<level>(static_cast<int>(status), | |
| lane_id)); |
| src_ib->lkey, | ||
| reinterpret_cast<uint64_t>(address), | ||
| rem_ib->rkey, remote_address, 0, | ||
| comp == NULL ? 0 : |
Contributor
There was a problem hiding this comment.
Suggested change
| comp == NULL ? 0 : | |
| comp == nullptr ? 0 : |
| sizeof(uint64_t), ep->atomic_result_lkey, | ||
| ep->atomic_result_va, rem_ib->rkey, | ||
| remote_address, inc_value, | ||
| comp == NULL ? 0 : |
Contributor
There was a problem hiding this comment.
Suggested change
| comp == NULL ? 0 : | |
| comp == nullptr ? 0 : |
Comment on lines
+13
to
+14
| UCT_IB_D2P_OP_RDMA_WRITE = 0, | ||
| UCT_IB_D2P_OP_ATOMIC_ADD = 1, |
Contributor
There was a problem hiding this comment.
Why do we need these operation codes? I see the opcode is set, but where should we check it?
Contributor
Author
There was a problem hiding this comment.
It's common protocol which may be used by different proxies.
example https://gitlab-master.nvidia.com/nbu-swx/ai/ucx-spcx-plugin/-/merge_requests/22/diffs#a0011c5941e2b14f2a81fcba6dd8347c939c88e6_0_169
rakhmets
previously approved these changes
Jul 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.