summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-22 00:05:39 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-22 00:05:39 -0400
commit427b9e1e10c3258bb031be142700b18c83296c69 (patch)
tree772804856aff4c82f25eea038d867db9a0e94523 /kernel
parent9e776d0bd3a77217c700bf2fc538e32ac0d9173e (diff)
downloadopen-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.c6
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))