diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-22 00:05:39 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-22 00:05:39 -0400 |
| commit | 427b9e1e10c3258bb031be142700b18c83296c69 (patch) | |
| tree | 772804856aff4c82f25eea038d867db9a0e94523 /kernel | |
| parent | 9e776d0bd3a77217c700bf2fc538e32ac0d9173e (diff) | |
| download | open-iov-427b9e1e10c3258bb031be142700b18c83296c69.tar.gz open-iov-427b9e1e10c3258bb031be142700b18c83296c69.zip | |
kernel: fn-10 delay tuned to 2ms (partial mitigation, not full fix)
2ms udelay before fn-10/47 replies. Mitigates but does not fully
eliminate the intermittent fn-10 FREE timeout (driver-side reply-
matching issue). Verified reply path correct: seqNum matches driver's
rxSeqNum (poison experiment 'Expected 75 got 175'), checksum folds to
0, function=10, writePtr/readPtr land, driver drains 1:1. Root cause
of the driver's intermittent non-acceptance of fn-10/47 replies during
cleanup remains under investigation (needs real-GSP oracle or guest-
kernel GDB inspection of the msgq reply-matching).
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/gsp_rm_emulation.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/gsp_rm_emulation.c b/kernel/gsp_rm_emulation.c index 842d952..1075bee 100644 --- a/kernel/gsp_rm_emulation.c +++ b/kernel/gsp_rm_emulation.c @@ -1367,9 +1367,9 @@ static void gsp_rm_handle_element(struct gsp_emu_context *ctx, const u8 *elem) gsp_rm_rpc_name(function), function, sequence, hdr->length, rm->unknown_rpcs); } - /* EXPERIMENT: small delay before fn-10/47 replies to test for a - * driver-side reply-matching race (reply arriving before the - * driver's poll state is fully set up). */ + /* Small delay before fn-10/47 replies: mitigates (does not fully + * eliminate) an intermittent driver-side reply-matching race in + * the FREE/UNLOADING path. See Handoff-vGPU-IO.md. */ if (function == 10 || function == 47) udelay(2000); if (gsp_rm_send(ctx, function, sequence, 0, NULL, 0)) |
