From 954277863e8206d2ddf6058b8958a34eee22576b Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Thu, 1 Oct 2026 21:59:42 -0400 Subject: gsp-phys: backend session API skeleton (P0, inert) --- kernel/gsp_phys_gpu.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'kernel/gsp_phys_gpu.h') diff --git a/kernel/gsp_phys_gpu.h b/kernel/gsp_phys_gpu.h index b8a1955..36532a5 100644 --- a/kernel/gsp_phys_gpu.h +++ b/kernel/gsp_phys_gpu.h @@ -12,4 +12,31 @@ int gsp_phys_gpu_claim(void); void gsp_phys_gpu_release(void); void __iomem *gsp_phys_gpu_bar0(void); +/* + * Backend session state (P0 skeleton; one physical GPU, one live claim). + * OFF until a start claims the device; READY is the only state in which live + * RPC forwarding is legal. The refcount and owner flag decide who releases: + * the load-time module-owned claim is joined, never released, by a stop(). + */ +enum gsp_phys_backend_state { + GSP_PHYS_BACKEND_OFF = 0, + GSP_PHYS_BACKEND_CLAIMING, + GSP_PHYS_BACKEND_BOOTING, + GSP_PHYS_BACKEND_READY, + GSP_PHYS_BACKEND_STOPPING, +}; + +/* + * Refcounted session start/stop around gsp_phys_gpu_claim()/_release(); safe + * (and idempotent) in any state. The generation counter is bumped when the + * session leaves READY; a forward that captured the previous value re-checks + * it under gsp_phys_rm_lock and refuses, so a stop cannot race an in-flight + * forward. The lock itself stays private to gsp_phys_gpu.c; the state and + * generation accessors are lock-free reads for use from the RPC path. + */ +int gsp_phys_backend_start(void); +void gsp_phys_backend_stop(void); +int gsp_phys_backend_state(void); +u32 gsp_phys_backend_generation(void); + #endif /* GSP_PHYS_GPU_H */ -- cgit v1.2.3