Hi folks: Here is the leftover of the previous spin of NVKM GSP RPC fixes, which is handling the return of large GSP message. PATCH 1 and 2 in the previous spin were merged [1], and this spin is based on top of PATCH 1 and PATCH 2 in the previous spin. Besides the support of the large GSP message, kernel doc and many cleanups are introduced according to the comments in the previous spin [2]. For testing, I tried the following without any problem: - run Uniengine Heaven [3] on my RTX 4060 for 8 hours - the GL CTS runner [4] (commandline: ./cts-runner --type-gl40) from Khronos - with the vGPU RFC patches [5], boot up a ubuntu VM with a vGPU on a L40 and run glmark2. v3: - Add a kernel doc and chart to introduce the GSP message and denote the memory layout. - Add a decoder section in the kernel doc to explain the terms in the code. - Refine the many confusing variable names to align with the terms in the kernel doc. - Introduce the continaution records in the kernel doc. - Re-factor the complicated function r535_gsp_msgq_wait(). - Other minor cleanups. v2: - Remove the Fixes: tags as the vanilla nouveau aren't going to hit these bugs. (Danilo) - Test the patchset on VK-GL-CTS. (Danilo) - Remove the ambiguous empty line in PATCH 2. (Danilo) - Rename the r535_gsp_msgq_wait to gsp_msgq_recv. (Danilo) - Introduce a data structure to hold the params of gsp_msgq_recv(). (Danilo) - Document the params and the states they are related to. (Danilo) [1] https://lore.kernel.org/all/20241017071922.2518724-1-zhiw@xxxxxxxxxx/ [2] https://lore.kernel.org/all/ZxD1BBUUeLQdvXVX@pollux/ [3] https://benchmark.unigine.com/heaven [4] https://github.com/KhronosGroup/VK-GL-CTS [5] https://lore.kernel.org/kvm/20240922124951.1946072-1-zhiw@xxxxxxxxxx/T/#t Zhi Wang (15): nvkm: add a kernel doc to introduce the GSP RPC nvkm: rename "repc" to "gsp_rpc_len" on the GSP message recv path nvkm: rename "argv" to what it represnts on the GSP message send path nvkm: remove unused param repc in *rm_alloc_push() nvkm: rename "argv" to what it represents in *rm_{alloc, ctrl}_*() nvkm: rename "argc" to what it represents in GSP RPC routines nvkm: fix the broken marco GSP_MSG_MAX_SIZE nvkm: remove the magic number in r535_gsp_rpc_push() nvkm: refine the variable names in r535_gsp_rpc_push() nvkm: refine the variable names in r535_gsp_msg_recv() nvkm: rename the variable "cmd" to "msg" in r535_gsp_cmdq_{get, push}() nvkm: factor out r535_gsp_msgq_peek() nvkm: factor out r535_gsp_msgq_recv_one_elem() nvkm: support handling the return of large GSP message nvkm: consume the return of large GSP message .../gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 8 +- .../gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 501 ++++++++++++------ 2 files changed, 354 insertions(+), 155 deletions(-) -- 2.34.1