summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-01 17:24:46 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-01 17:24:46 -0400
commit3d960c88f6167aad599a2921c0cf2fa635d0484d (patch)
tree63139ded3a49b9f3f11c07d233e2da5c497b0b66 /kernel/gsp_phys_booter.h
parent6076a58e85168b2cdd7efbde2e226708f5c5c5b0 (diff)
downloadopen-iov-3d960c88f6167aad599a2921c0cf2fa635d0484d.tar.gz
open-iov-3d960c88f6167aad599a2921c0cf2fa635d0484d.zip
gsp-phys: add the host RM-client ladder (gsp-phys-rm-call) for real object allocation and a first real copy
Diffstat (limited to 'kernel/gsp_phys_booter.h')
-rw-r--r--kernel/gsp_phys_booter.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.h b/kernel/gsp_phys_booter.h
index 7ed1635..935777f 100644
--- a/kernel/gsp_phys_booter.h
+++ b/kernel/gsp_phys_booter.h
@@ -138,6 +138,23 @@ int gsp_phys_boot_rm_unload(void __iomem *bar0);
* sends when init-done was not observed and never touches WPR2. The
* static-info reply is decoded into dmesg (internal handles, split-VA
* flag, BAR1/2 PDE bases, FB geometry, engine caps, SRIOV/board fields).
+ * - "gsp-phys-rm-call" (write-only, mode 0200): writing N (1..4) runs the
+ * host RM client ladder cumulatively through stage N on a live, init-done
+ * claim and remembers the reached stage for the rest of the session:
+ * stage 1 allocates NV01_ROOT -> NV01_DEVICE_0 -> NV20_SUBDEVICE_0
+ * (function 103); stage 2 allocates and registers the nine DMA buffers
+ * (function 4, NV01_MEMORY_LIST_SYSTEM with real PFNs); stage 3 allocates
+ * KEPLER_CHANNEL_GROUP_A (COPY0) and TURING_CHANNEL_GPFIFO_A with the
+ * physical instance/userd/ramfc/mthdbuf descriptors then requests the
+ * work-submit token (function 76); stage 4 schedules the channel, writes
+ * the CE method block plus GPFIFO entry and USERD GP_PUT, rings the PF
+ * channel doorbell and polls the sysmem semaphore for a real 4 KB
+ * sysmem-to-sysmem copy (function 76 + the CE doorbell path). Serialised
+ * with the other triggers by gsp_phys_rm_lock, per-RPC bounded
+ * (2000 ms), aborts at the first failure with no object teardown (UNLOAD
+ * + rmmod is the fail-safe), never touches WPR2, and is inert until the
+ * file is written. Ladder buffers are freed by
+ * gsp_phys_boot_staging_free() on release.
* - "gsp-phys-state" (read-only, mode 0444): seq_file snapshot of the
* claimed/booted state (falcon registers, scratch14, both queue TX
* headers, a bounded read-only status-ring walk, the stage flags and the