r535_gsp_libos_init(9)
๐ bestie, meet r535_gsp_libos_init(9) ๐
Okay so this is a Kernel API Manual page, and the main character is r535_gsp_libos_init(9). Buckle up, itโs giving kernel-API realness. ๐
๐ธ NAME ๐ธ
r535_gsp_libos_init โ create the libos arguments structure
โจ SYNOPSIS โจ
int r535_gsp_libos_init (struct nvkm_gsp *gsp );
๐ซถ ARGUMENTS ๐ซถ
gspโ agsppointer. Thatโs it, thatโs the whole argument list. ๐
๐ DESCRIPTION ๐
The logging buffers are literally byte queues, bestie: they contain encoded printf-like messages from GSP-RM. They need to be decoded by a special application that can parse the buffers. No cap.
The 'loginit' buffer contains logs from early GSP-RM init and exception dumps. The 'logrm' buffer contains the subsequent logs. Both are written to directly by GSP-RM and can be any multiple of GSP_PAGE_SIZE. ๐ฆ
The physical address map for the log buffer is stored in the buffer itself, starting with offset 1. Offset 0 contains the โputโ pointer (pp). Initially, pp is equal to 0. If the buffer has valid logging data in it, then pp points to index into the buffer where the next logging entry will be written. Therefore, the logging data is valid if:
1 <= pp < sizeof(buffer)/sizeof(u64)
The GSP only understands 4K pages (GSP_PAGE_SIZE), so even if the kernel is configured for a larger page size (e.g. 64K pages), we need to give the GSP an array of 4K pages. Fortunately, since the buffer is physically contiguous, itโs simple math to calculate the addresses. ๐งฎโจ
The buffers must be a multiple of GSP_PAGE_SIZE. GSP-RM also currently ignores the kind field for LOGINIT, LOGINTR, and LOGRM, but expects the buffers to be physically contiguous anyway.
๐จ Important: the memory allocated for the arguments must remain until the GSP sends the init_done RPC. Do not lose track of that, bestie.
See _kgspInitLibosLoggingStructures (allocates memory for buffers). See kgspSetupLibosInitArgs_IMPL (creates pLibosInitArgs[] array).
๐ SEE ALSO ๐
- Kernel file:
./drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c nvkm_gsp_mem_ctor(9),struct registry_list_entry(9),add_registry(9),build_registry(9),clean_registry(9),strip(9),r535_gsp_rpc_set_registry(9),r535_gsp_msg_run_cpu_sequencer(9),struct rpc_ucode_libos_print_v1e_08(9),r535_gsp_msg_libos_print(9),create_debugfs(9),r535_gsp_libos_debugfs_init(9),create_pte_array(9),nvkm_gsp_radix3_sg(9),r535_debugfs_shutdown(9),is_empty(9),r535_gsp_copy_log(9),r535_gsp_retain_logging(9),r535_gsp_libos_debugfs_fini(9)
๐ footer sign-off, periodt: source/version ./drivers/gpu/drm/nouveau/nvkm... ยท date October 2026 ยท manual r535_gsp_libos_init(9) ๐
๐ฆ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms