summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 08:29:45 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 08:29:45 -0400
commitc155ee8de5b642cbd407bf2231041f17ebe43734 (patch)
tree3b506524ee7d795278580e5091561be176586826 /kernel/gsp_phys_gpu.h
parent83ac7fdca1f9b0b7b6507819f8db508eb7852622 (diff)
downloadopen-iov-c155ee8de5b642cbd407bf2231041f17ebe43734.tar.gz
open-iov-c155ee8de5b642cbd407bf2231041f17ebe43734.zip
gsp-phys: H1 GR ladder - GR0 channel, compute object, GR sem push (default off)
New load-time gsp_phys_rmcall_engine (0=COPY0 default, 1=GR0) parameterizes the physical ladder: TSG and channel engine_type GR0, one-attempt channel alloc, TURING_COMPUTE_A engine object (class 0xc5c0, handle 0xcaf0002c), BIND engineType=1, and a GR method push (SET_OBJECT 0xc5c0 on subchannel 1 plus SET_REPORT_SEMAPHORE) submitted through the existing GPFIFO/USERD doorbell tail, polling the module semaphore. CE work-forwarding refuses cleanly while a GR ladder is active. A debugfs trigger re-runs the GR push. With the parameter at its default the ladder emits byte-identical COPY0 requests (only the state line gains engine=COPY0). Live (first GR context on the live server): every GR RPC accepted - channel variant V5, TURING_COMPUTE_A alloc status=0x0 -> hObject=0xcaf0002c, BIND status=0x0, token=0x1 - and the engine fetched the push (GPGet 0->1), but raised a GR exception instead of executing the release: exceptType=0x20, NOCAT faultingEngine="GR", intr1=0x80000000, no rpc_result errors. The failure is downstream of all RPCs; no mutating retry was made and the device released cleanly (WPR2 down, rebound, 5 locks, pstore empty, same boot). A default-engine control cycle stayed green (REAL COPY OK). Follow-up: bisect the GR alloc params, the release method D word, and the method order/context init using the drained GR fault records as the oracle.
Diffstat (limited to 'kernel/gsp_phys_gpu.h')
-rw-r--r--kernel/gsp_phys_gpu.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/gsp_phys_gpu.h b/kernel/gsp_phys_gpu.h
index 214c62d..f34d7a2 100644
--- a/kernel/gsp_phys_gpu.h
+++ b/kernel/gsp_phys_gpu.h
@@ -166,6 +166,16 @@ bool gsp_phys_fault_relay_enabled(void);
bool gsp_phys_fault_inject_enabled(void);
/*
+ * RM-client ladder engine selector (gsp_phys_rmcall_engine; default 0):
+ * returns the raw module-parameter value, where 0 = COPY0 (the existing CE
+ * ladder) and 1 = GR0 (the TURING_COMPUTE_A engine object plus a GR
+ * semaphore release). The booter snapshots this when the rm-call ladder's
+ * stage 3 starts and ignores later changes, so this accessor is for the
+ * snapshot and diagnostics only.
+ */
+int gsp_phys_rmcall_engine_value(void);
+
+/*
* Translate a guest GPA to the pinned host PA (gsp_phys_guest_mem ladder
* support). The mdev is registered with vfio_register_emulated_iommu_dev():
* its VFIO type-1 container keeps the guest DMA mappings privately, so