diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 21:47:25 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 21:47:25 -0400 |
| commit | 75b908eec35180c71f91450cece1b6d1f3fc5ddd (patch) | |
| tree | dff9fdc18b1d6adda14359353531b9cc7d1e8952 /tools/rmq | |
| parent | d4cc5f989943f01875dea86b834d90538a748112 (diff) | |
| download | open-iov-75b908eec35180c71f91450cece1b6d1f3fc5ddd.tar.gz open-iov-75b908eec35180c71f91450cece1b6d1f3fc5ddd.zip | |
vgsp-work r583: fail-closed at the defer cap when a launch's data page still has an unexecuted device write
The r581 boot's saxpy red draw (bad=524121 csum=874874129) shows the
residual hole of the r541 dstpend guard: GR-DEC "push=0x20043c198
n_data=2505 dropped=8 partial=1 dstpend=1 copypend=0 defer_exp=0" and on
the final dump defer_exp=1 - the launch overlapped a page whose device
write had never executed (live dstpend records 9.5-85 s old), the guard
deferred through its bounded retry, the r556 15 s absolute cap expired,
and the historical path forwarded the launch anyway: the engine read the
known-stale operand and produced the ~50%-wrong result.
r583: at cap expiry with the overlap still live the forward is REFUSED.
Fail-closed: the candidate's QMD completion is authored in software
(forward-only; rel_done latched so the consume tail cannot double-author)
and the candidate is consumed without an engine launch - the client
completes, the engine never touches a page whose writer did not run, and
the event is witnessed loudly ("GR forward REFUSED at defer cap ...").
This cannot hang the guest: the refusal consumes instead of holding.
Diffstat (limited to 'tools/rmq')
0 files changed, 0 insertions, 0 deletions
