summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-25 03:38:01 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-25 03:38:01 -0400
commit365261b55fb866f2a3fd0dd2bd3dd34eabf69b8b (patch)
tree5f20e9a14bb8a6eea67a6d5ba240b6726a58fabd /kernel
parent0abc562e1124d7a3b93f710b8552ec18a1993941 (diff)
downloadopen-iov-365261b55fb866f2a3fd0dd2bd3dd34eabf69b8b.tar.gz
open-iov-365261b55fb866f2a3fd0dd2bd3dd34eabf69b8b.zip
gsp_rm: make GSP_SET_SYSTEM_INFO/SET_REGISTRY fire-and-forget (no reply)
Guest driver was receiving SUCCESS replies as 'unexpected events' (0x48, 0x49). These async init RPCs are fire-and-forget per GSP-RM protocol; driver doesn't expect a reply on the status queue. CONTINUATION_RECORD still sends SUCCESS.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_rm_emulation.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/gsp_rm_emulation.c b/kernel/gsp_rm_emulation.c
index eaa2ff5..a1c653e 100644
--- a/kernel/gsp_rm_emulation.c
+++ b/kernel/gsp_rm_emulation.c
@@ -2866,8 +2866,16 @@ static void gsp_rm_handle_element(struct gsp_emu_context *ctx, const u8 *elem)
switch (function) {
case GSPRM_RPC_FUNC_GSP_SET_SYSTEM_INFO:
case GSPRM_RPC_FUNC_SET_REGISTRY:
+ /* Async init RPCs - fire and forget, no reply expected.
+ * Guest was treating SUCCESS replies as "unexpected events". */
+ nv_vgpu_info(ctx->vgpu, "GSPRM: async RPC %s(%u) seq=%u len=%u -> NO REPLY (fire-and-forget)",
+ gsp_rm_rpc_name(function), function, sequence,
+ hdr->length);
+ rm->rpcs_replied++;
+ return;
+
case GSPRM_RPC_FUNC_CONTINUATION_RECORD:
- /* Async init RPCs - but driver expects a reply. Send SUCCESS. */
+ /* CONTINUATION_RECORD: driver expects a reply. Send SUCCESS. */
nv_vgpu_info(ctx->vgpu, "GSPRM: async RPC %s(%u) seq=%u len=%u -> SUCCESS reply",
gsp_rm_rpc_name(function), function, sequence,
hdr->length);