summaryrefslogtreecommitdiffstats
path: root/kernel/tests
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 04:49:53 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 04:49:53 -0400
commit0c73ae13061fcdcbd2fefba167dc2f797ec6e2d9 (patch)
treed72b0ea6039a4388a2fa981dcc132bfb537ce22c /kernel/tests
parent3765729cdaf6ad340cb11d1c7a971ded44227267 (diff)
downloadopen-iov-0c73ae13061fcdcbd2fefba167dc2f797ec6e2d9.tar.gz
open-iov-0c73ae13061fcdcbd2fefba167dc2f797ec6e2d9.zip
vgsp-gr r605: walk the eng==0 class newest-registered first - the stream-order fix completed (the write-pointer drain, by ordering)
The r507o stream-order fix (walk CE channels before GR ones) assumed the client's H2D copies ride CE channels. r595 established they also ride the compute-class channel h=0x5c000059 (eng=0), and r604 gave the decision-time capture: at the vadd's second decision on a fresh boot, 'peek-backlog h=0x5c000059 eng=0 put=95 last=94' - the b-copy entry was already written and PUBLISHED (GP_PUT ahead of the pump) while the launch decision ran, invisible to every guard (the r590 watermark skips engine_type==0; the r541/r568 gates only see DECODED copies). The pump's stable partition walked the launch channel (registered early, 0x5c000019) before the copy channel (registered later, 0x5c000059), so the copy was consumed 8 ms AFTER the decision and ~320 ms before the launch's copy-in; the run was green only because the partial-argument defer had stretched the window. Pins landing one pass earlier would have forwarded against the pre-copy page (c = a + 0, the r568 red draw). Fix the order within the class: newest-registered first (descending h_object) walks the driver's later-registered copy / push-library channels before its compute channels, so every launch decision sees the copy ring consumed to its live write pointer (GP_PUT) - the write-pointer drain, by ordering. No deferral, no cap interaction, no speculative execution: the pump still consumes each entry exactly once through its normal per-slot identity bookkeeping (slot_ops_ident/done/complete/hash), so no identity mirroring is needed. A client whose compute channel registers last keeps the historical order (no worse).
Diffstat (limited to 'kernel/tests')
0 files changed, 0 insertions, 0 deletions