diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 15:54:23 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 15:54:23 -0400 |
| commit | 70198e7f0cde3768e00f7bbabe94fd26a2fcfa54 (patch) | |
| tree | ce96b8f32145117140009977485108f413e02953 /kernel/gsp_emulation.c | |
| parent | 90ed3273a6b7b0241954fde6b2d34ab3270d9081 (diff) | |
| download | open-iov-70198e7f0cde3768e00f7bbabe94fd26a2fcfa54.tar.gz open-iov-70198e7f0cde3768e00f7bbabe94fd26a2fcfa54.zip | |
vgsp-sema: resync a CE channel past residual USERD state on counter reset (ISSUE-0002)
r48: the layout USERD of the second session's rank0 was accepted with the
previous session's residual PUT=134; the pump consumed 34 stale slots, then
the guest's fresh counter reset PUT to 1 and the pump wrapped: last_get never
matched the guest's sequence and the live first push was not processed. The
client was later seen pushing 216-byte no-release entries with crel frozen.
A fresh channel's first push always publishes PUT<=1 and the client waits for
its release before a second push, so a PUT>=2 at discovery is residual: seed
last_get past it and resync to slot 0 when the guest's own counter reset
drops PUT below put_prev. Clear the wait state once entries are consumed
without a reset so later genuine wraps keep the normal wrap path.
Diffstat (limited to 'kernel/gsp_emulation.c')
0 files changed, 0 insertions, 0 deletions
