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 | 365261b55fb866f2a3fd0dd2bd3dd34eabf69b8b (patch) | |
| tree | 5f20e9a14bb8a6eea67a6d5ba240b6726a58fabd | |
| parent | 0abc562e1124d7a3b93f710b8552ec18a1993941 (diff) | |
| download | open-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.
| -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); |
