From 427b9e1e10c3258bb031be142700b18c83296c69 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Tue, 22 Sep 2026 00:05:39 -0400 Subject: 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). --- kernel/gsp_rm_emulation.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'kernel') 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)) -- cgit v1.2.3