Repository navigation
UCT/RC: Reserve TX credits for multi-credit sends - #11841
Conversation
|
🤖 Starting review — findings will be posted here when done. |
f20e507 to
f44378a
Compare
|
Behavioral scope beyond Test coverage note: The new |
|
🤖 Starting review — findings will be posted here when done. |
|
minor: in_pending could be a UCT_RC_EP_FLAG_* bit in the existing
The new put_am_pending test shares one sgl_ctx/local/remote/param across all worker threads and issues on the same ep under MULTI_THREAD_WORKER. That is safe (read-only SGL contents, MT worker mode), but since there is no data verification and no direct ordering assertion, the test only catches crashes/asserts/errors — it will not detect silent ordering violations. |
flags is already a full uint8_t (bits 0-4 ep state, 5-7 FC AM header). No spare bit without widening, which does not save space vs a dedicated
Correct, it is a debug-assert reproducer, not a payload/FIFO checker. The invariant is UCT QP order. Checking PUT data before AM would close the race the test is meant to hit. |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 CI Triage Agent — [incomplete: stop_reason=max_tokens] |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
|
🤖 CI Triage Agent — TL;DR: Full analysisSummary: gtest step failed with 2 failures — Root cause: Implicated commit: [REDACTED:Hex High Entropy String] — "UCT/RC: Block sends only when pending is queued" (Michal Shalev); builds on f44378a "UCT/RC: Preserve pending order for multi-credit SGL puts" File: src/uct/ib/rc/base/rc_ep.h:108-115 (pending check added at line 109); test assertion at test/gtest/uct/ib/test_rc.cc:959 Suggested fix: Drop Related: PR #11841 (this PR), #11677 (put_sgl_zcopy implementation), #11361 (per-EP
|
|
🤖 Starting review — findings will be posted here when done. |
|
Note (no action required): The Note (no action required): |
…ct-rc-pending-sgl-order # Conflicts: # test/gtest/uct/ib/test_rc.cc
|
🤖 Starting review — findings will be posted here when done. |
|
Residual coverage gap worth noting: the new tests only run where |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 CI Triage Agent — TL;DR: The gtest shard died in Full analysisSummary: Root cause:
Implicated commit: unknown for the UMR timeout (environment / pre-existing GGA UMR path); PR commits under test are File: Suggested fix:
Related: PR #11841 (build under test,
|
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
What?
Reserve the TX credits a multi-credit send needs, so that later single-credit sends on the same EP cannot consume them.
Why?
put_sgl_zcopyneedscountWQEs, so it returnsNO_RESOURCEwhile credits are still available and is queued in pending. A later 1-credit AM then passes the resource check and is posted ahead of it:How?
Resource checks compare the available credits against
max(requirement, EP reservation), and a failing send records its requirement intxqp_reserve/cq_reserve.The reservation is released by
uct_rc_ep_schedule_pending()once nothing is queued on the EP, and byuct_rc_ep_pending_purge().