diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-27 17:05:10 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-27 17:05:10 -0400 |
| commit | 00319db208aa8fa90b6ad03ef154815ed86d8225 (patch) | |
| tree | aa7c31f2cd99b3d9882f351188c915d0b67d192f /kernel/include | |
| parent | 28c8c8e9635a072abe52b08b30b6d9607cfb0768 (diff) | |
| download | open-iov-00319db208aa8fa90b6ad03ef154815ed86d8225.tar.gz open-iov-00319db208aa8fa90b6ad03ef154815ed86d8225.zip | |
vgsp: xw-mirror writes one learned frame-step ahead of the counter
r866: the mirror tracked perfectly yet every wait still paid the driver's
~3 s re-check sleep (one '(0)' success print every 20-80 s; the GL client
hung minutes on its X socket). Cause: the driver increments its counter
and then enters the wait; a member that only tracks the counter always
loses that entry-check race (mirror wakes <=3 ms after the change; the
driver probes within microseconds), so the check fails and the driver
sleeps out its retry interval. Writing member = counter + last-observed-
delta (learned from each counter change, 0 until the first) makes the
driver's own increment land exactly on the pre-written member value, so
the first probe after submission succeeds and frames complete at the
driver's pace.
Diffstat (limited to 'kernel/include')
0 files changed, 0 insertions, 0 deletions
