[PATCH v4 00/15] NVKM GSP RPC kernel docs, cleanups and fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



Hi folks:

Here is another re-spin of handling the large GSP message return.

Besides the support of the large GSP message, kernel doc and many cleanups
are introduced according to the comments in the previous spin [1].

For testing, I tried the following without any problem:

- run Uniengine Heaven [2] on my RTX 4060 for 8 hours
- the GL CTS runner [3] (commandline: ./cts-runner --type-gl40) from
Khronos
- with the vGPU RFC patches [4], boot up a ubuntu VM with a vGPU on a L40
and run glmark2.

v4:
- Introduce a documentation in Documentation/gpu/nouveau.rst.
- Fix the reference link of NVIDIA SDK headers in the document.
- Replace the "decoders" term with "terminology".
- Explain the adding offset in r535_gsp_msgq_get_entry().
- Replace the magic number 0x1000 with GSP_PAGE_SIZE in the re-factor.
- Introduce a DOC to explain the GSP message receiving flow.

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/nouveau/20241031085250.2941482-1-zhiw@xxxxxxxxxx/
[2] https://benchmark.unigine.com/heaven
[3] https://github.com/KhronosGroup/VK-GL-CTS
[4] https://lore.kernel.org/kvm/20240922124951.1946072-1-zhiw@xxxxxxxxxx/T/#t


Zhi Wang (15):
  drm/nouveau: add a kernel doc to introduce the GSP RPC
  drm/nouveau: rename "repc" to "gsp_rpc_len" on the GSP message recv
    path
  drm/nouveau: rename "argv" to what it represents on the GSP message
    send path
  drm/nouveau: remove unused param repc in *rm_alloc_push()
  drm/nouveau: rename "argv" to what it represents in *rm_{alloc,
    ctrl}_*()
  drm/nouveau: rename "argc" to what it represents in GSP RPC routines
  drm/nouveau: fix the broken marco GSP_MSG_MAX_SIZE
  drm/nouveau: remove the magic number in r535_gsp_rpc_push()
  drm/nouveau: refine the variable names in r535_gsp_rpc_push()
  drm/nouveau: refine the variable names in r535_gsp_msg_recv()
  drm/nouveau: rename the variable "cmd" to "msg" in r535_gsp_cmdq_{get,
    push}()
  drm/nouveau: factor out r535_gsp_msgq_peek()
  drm/nouveau: factor out r535_gsp_msgq_recv_one_elem()
  drm/nouveau: support handling the return of large GSP message
  drm/nouveau: consume the return of large GSP message

 Documentation/gpu/drivers.rst                 |   1 +
 Documentation/gpu/nouveau.rst                 |  27 +
 .../gpu/drm/nouveau/include/nvkm/subdev/gsp.h |   8 +-
 .../gpu/drm/nouveau/nvkm/subdev/gsp/r535.c    | 526 +++++++++++++-----
 4 files changed, 409 insertions(+), 153 deletions(-)
 create mode 100644 Documentation/gpu/nouveau.rst

-- 
2.34.1




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux