drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h- Extension
.h- Size
- 11112 bytes
- Lines
- 508
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
core/subdev.hcore/falcon.hcore/firmware.hlinux/debugfs.hrm/rm.h
Detected Declarations
struct nvkm_gsp_memstruct nvkm_gsp_radix3struct nvkm_gsp_eventstruct nvkm_gspstruct nvkm_gsp_cmdqstruct nvkm_gsp_msgqstruct nvkm_gsp_msgq_ntfystruct nvkm_gsp_clientstruct nvkm_gsp_objectstruct nvkm_gsp_devicestruct nvkm_gsp_eventenum nvkm_gsp_rpc_reply_policyfunction nvkm_gsp_rmfunction nvkm_gsp_rpc_getfunction nvkm_gsp_rpc_pushfunction nvkm_gsp_rpc_rdfunction nvkm_gsp_rpc_wrfunction nvkm_gsp_rpc_donefunction nvkm_gsp_rm_ctrl_getfunction nvkm_gsp_rm_ctrl_pushfunction nvkm_gsp_rm_ctrl_rdfunction nvkm_gsp_rm_ctrl_wrfunction nvkm_gsp_rm_ctrl_donefunction nvkm_gsp_rm_alloc_getfunction nvkm_gsp_rm_alloc_pushfunction nvkm_gsp_rm_alloc_wrfunction nvkm_gsp_rm_alloc_donefunction nvkm_gsp_rm_allocfunction nvkm_gsp_rm_freefunction nvkm_gsp_device_ctorfunction nvkm_gsp_device_dtorfunction nvkm_gsp_client_device_ctorfunction nvkm_gsp_device_event_ctorfunction nvkm_gsp_event_dtor
Annotated Snippet
struct nvkm_gsp_mem {
struct device *dev;
size_t size;
void *data;
dma_addr_t addr;
};
int nvkm_gsp_mem_ctor(struct nvkm_gsp *, size_t size, struct nvkm_gsp_mem *);
void nvkm_gsp_mem_dtor(struct nvkm_gsp_mem *);
struct nvkm_gsp_radix3 {
struct nvkm_gsp_mem lvl0;
struct nvkm_gsp_mem lvl1;
struct sg_table lvl2;
};
int nvkm_gsp_sg(struct nvkm_device *, u64 size, struct sg_table *);
void nvkm_gsp_sg_free(struct nvkm_device *, struct sg_table *);
typedef int (*nvkm_gsp_msg_ntfy_func)(void *priv, u32 fn, void *repv, u32 repc);
struct nvkm_gsp_event;
typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event *, void *repv, u32 repc);
/**
* DOC: GSP message handling policy
*
* When sending a GSP RPC command, there can be multiple cases of handling
* the GSP RPC messages, which are the reply of GSP RPC commands, according
* to the requirement of the callers and the nature of the GSP RPC commands.
*
* NVKM_GSP_RPC_REPLY_NOWAIT - If specified, immediately return to the
* caller after the GSP RPC command is issued.
*
* NVKM_GSP_RPC_REPLY_NOSEQ - If specified, exactly like NOWAIT
* but don't emit RPC sequence number.
*
* NVKM_GSP_RPC_REPLY_RECV - If specified, wait and receive the entire GSP
* RPC message after the GSP RPC command is issued.
*
* NVKM_GSP_RPC_REPLY_POLL - If specified, wait for the specific reply and
* discard the reply before returning to the caller.
*
*/
enum nvkm_gsp_rpc_reply_policy {
NVKM_GSP_RPC_REPLY_NOWAIT = 0,
NVKM_GSP_RPC_REPLY_NOSEQ,
NVKM_GSP_RPC_REPLY_RECV,
NVKM_GSP_RPC_REPLY_POLL,
};
struct nvkm_gsp {
const struct nvkm_gsp_func *func;
struct nvkm_subdev subdev;
struct nvkm_falcon falcon;
struct {
struct {
const struct firmware *load;
const struct firmware *unload;
} booter;
const struct firmware *fmc;
const struct firmware *bl;
const struct firmware *rm;
struct {
struct nvkm_falcon_fw sb;
} falcon;
} fws;
struct nvkm_firmware fw;
struct nvkm_gsp_mem sig;
struct nvkm_gsp_radix3 radix3;
struct {
struct {
struct {
u64 addr;
u64 size;
} vga_workspace;
u64 addr;
u64 size;
} bios;
struct {
struct {
u64 addr;
u64 size;
Annotation
- Immediate include surface: `core/subdev.h`, `core/falcon.h`, `core/firmware.h`, `linux/debugfs.h`, `rm/rm.h`.
- Detected declarations: `struct nvkm_gsp_mem`, `struct nvkm_gsp_radix3`, `struct nvkm_gsp_event`, `struct nvkm_gsp`, `struct nvkm_gsp_cmdq`, `struct nvkm_gsp_msgq`, `struct nvkm_gsp_msgq_ntfy`, `struct nvkm_gsp_client`, `struct nvkm_gsp_object`, `struct nvkm_gsp_device`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.