diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-25 03:38:01 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-25 03:38:01 -0400 |
| commit | 215c61757395e24ab7db38f397f079fb89ea19d7 (patch) | |
| tree | 1f96a83a1477232349a7a363e7bad1644ebd8d70 | |
| parent | b968c287865b8860e7938f56db3fa358c5bef66e (diff) | |
| download | open-iov-215c61757395e24ab7db38f397f079fb89ea19d7.tar.gz open-iov-215c61757395e24ab7db38f397f079fb89ea19d7.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.
| -rw-r--r-- | kernel/gsp_rm_emulation.c | 10 |
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); |
