<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git/kernel/gsp_phys_gpu.c, branch golden-replay</title>
<subtitle>Open-IOV vGPU-IO: host-side GSP emulation for unmodified NVIDIA guest drivers
</subtitle>
<id>https://git.vgpu.io/open-iov.git/atom?h=golden-replay</id>
<link rel='self' href='https://git.vgpu.io/open-iov.git/atom?h=golden-replay'/>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/'/>
<updated>2026-10-05T21:16:18+00:00</updated>
<entry>
<title>vgsp: add golden-replay mode 25 (captured client construct + atomic 9-entry promote)</title>
<updated>2026-10-05T21:16:18+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T21:16:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=fc8d7923c83c6babd0ee8c23565ac18b709fa5a5'/>
<id>urn:sha1:fc8d7923c83c6babd0ee8c23565ac18b709fa5a5</id>
<content type='text'>
Ladder mode 25 reproduces the real 570.144 host client's golden-image
construct on the golden replay handles: captured channel shape (flags
0x00200320, hObjectBuffer 0, gpFifoOffset 0, gpFifoEntries 0x20,
engineType 1, host memdesc substitutions), a single atomic 9-entry
GPU_PROMOTE_CTX on the golden channel (MAIN id0 and PATCH id2 combined,
ids 3/4/5/6 VA-only globals, ids 9/10/11 FECS/PRIV/UNR combined), then
the TURING_A 3D object. The golden VAS/channel/3D object stay alive and
the existing V6 FWCLIENT promote follows on the golden-initialized
GR-instance state; a failed golden step aborts with no retry and no
follow-up promote. The captured VAS COPY_SERVER_RESERVED_PDES control is
implemented gated (fwclient mask bit 8, zero-level no-op form) because
its level PAs are server-internal. Mode clamp/name/help extended to 25;
modes 1-24 unchanged.
</content>
</entry>
<entry>
<title>vgsp: FWCLIENT entry-selection mask and golden-replay hardening</title>
<updated>2026-10-05T20:04:33+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T20:04:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=7c1fceb5654cda3628531214934b93e96a507700'/>
<id>urn:sha1:7c1fceb5654cda3628531214934b93e96a507700</id>
<content type='text'>
- gsp_phys_rmcall_fwclient_mask (default 0x3f): per-entry selection for the
  mode-24 FWCLIENT promote set; bit6 selects the MAIN UVM VA-only shape.
- golden replay: tolerate the client-local system-memory PB step and continue
  with hObjectBuffer=0; on-ladder TURING_A 3D object retained best-effort.

Live bisection on the KMD channel: MAIN alone reaches the per-buffer commit
and stops at the engine-context memdesc state; PM-only and PATCH-only are
accepted; any multi-entry control containing MAIN is refused 0x1f. All
cycles release clean.
</content>
</entry>
<entry>
<title>vgsp: GR golden-replay groundwork and FWCLIENT promote mode 24</title>
<updated>2026-10-05T19:58:43+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T19:58:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=5a77352f78e6cd28280f2dc559f677d31ae25c38'/>
<id>urn:sha1:5a77352f78e6cd28280f2dc559f677d31ae25c38</id>
<content type='text'>
- golden replay (gsp_phys_rmcall_golden, default off): replay the stock
  client's post-load golden channel allocations (separate VAS, pushbuffer
  objects, USERD, bare GR channel, TURING_A 3D object) before the ladder
  channel; best-effort: a failure warns and the ladder continues.
- on-ladder TURING_A (0xc597) 3D object allocation before the compute
  object (best-effort) to initialize server-side GR-instance state.
- promote mode 24: the reference FWCLIENT non-3D set (MAIN, PM, PATCH,
  FECS_EVENT, PRIV_ACCESS_MAP, UNRESTRICTED_PRIV_ACCESS_MAP) as one
  GPU_PROMOTE_CTX on the KMD channel, with per-entry logging and explicit
  omission semantics; mode clamps/descriptions extended to 24.

Live: mode 23 soft-stops 0x1f on the server-managed shared channel and
reaches the per-buffer commit on the KMD channel, where it stops at the
missing engine-context memdesc; mode 24 emits all six entries and is
refused with 0x1f before BIND. All cycles release clean, GPU green.
</content>
</entry>
<entry>
<title>vgsp: GR promote mode 23 (hVirtMemory FBMEM server-managed commit shape)</title>
<updated>2026-10-05T19:10:01+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T19:10:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=7e5c30f5b47ad215970ab9e5ad9c53a3b3ea6321'/>
<id>urn:sha1:7e5c30f5b47ad215970ab9e5ad9c53a3b3ea6321</id>
<content type='text'>
The hVirtMemory no-entry promote backed by the server-owned FBMEM context object (GSP_RM_ALLOC class 0x40) on the server-managed shared V5 channel. A physical memdesc bypasses the server-booked engine-ctx vaList and hands the memdesc straight to the per-buffer commit 0x5b00d2c, the one remaining promote shape on the stable shared+srvctx path. Runs grv23/grv23v6 soft-stop at PROMOTE_CTX hVirtMemory status=0x1f before BIND with clean releases.
</content>
</entry>
<entry>
<title>vgsp: srv_ctxcommit mode 2 (V6 client combined init+VA entry)</title>
<updated>2026-10-05T18:03:48+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T18:03:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=aff698d003d256a41bf7d4062bb81792457d3219'/>
<id>urn:sha1:aff698d003d256a41bf7d4062bb81792457d3219</id>
<content type='text'>
Make gsp_phys_rmcall_srv_ctxcommit an int mode: 1 (default) = map +
INITIALIZE_CTX + UVM-shape VA-only promote; 2 = V6 client variant, no
INITIALIZE_CTX and one combined PA+VA MAIN entry with bInitialize=1 and
bNonmapped=0 so the first ctxsw initializes from the golden image; 0 = pure
server-managed. Lets the next supervised cycle bisect both entry shapes
without a rebuild. Build clean; not hardware-tested (GPU wedged).
</content>
</entry>
<entry>
<title>vgsp: add gsp_phys_rmcall_channel to force one GR channel variant</title>
<updated>2026-10-05T17:40:15+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T17:40:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=d07555097d5f46d0f51c98572a220235ea5fcc0d'/>
<id>urn:sha1:d07555097d5f46d0f51c98572a220235ea5fcc0d</id>
<content type='text'>
Lets a bisection pair any promote shape with any channel shape, in
particular V6 (SKIP_CTXBUFFER_ALLOC, KMD-managed) with the server-managed
VA-only promote: with skip-ctxbuffer the server's kgrctxMapCtxBuffers does
not pre-book the engine context vaList, so the VA branch's
vaListSetManaged(NV_FALSE) gate should pass and the per-buffer commit can
program the engine context VA. Default 0 keeps the mode-selected walk
byte-identical. Not hardware-tested (GPU wedged; see Handoff ADDENDUM 51).
</content>
</entry>
<entry>
<title>vgsp: GR server-managed context commit experiments (EVICT, VA promote, external path)</title>
<updated>2026-10-05T17:39:25+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T17:39:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=97e7d0136fe63b08823d8b66d5bab84cfecf435b'/>
<id>urn:sha1:97e7d0136fe63b08823d8b66d5bab84cfecf435b</id>
<content type='text'>
Rung-2 bisection after the GET_CTX_BUFFER_INFO ABI fix made the server ctx
geometry visible (8 buffers; MAIN 0x133000 FBMEM, PATCH 0x5000):

- map the server MAIN/PATCH at the ladder ctx VAs with FBMEM PTEs and send
  the UVM-shape VA-only promote (bInitialize=0, bNonmapped=0). On the shared
  VAS the per-entry VA branch calls vaListSetManaged(NV_FALSE) and returns
  0x40 because the server pre-booked MAIN as managed; EVICT_CTX (status 0)
  does not release that booking.
- try the same VA promote on the external VAS where the server did not book
  (kgrctxMapCtxBuffers early-returns): the promote never replies (-110) and
  leaves the device in the locked fail-safe (WPR2 up, unbound). Do not repeat
  this shape without a new hypothesis.
- FBMEM physAttr selection for the server MAIN fixed (aperture 2 -&gt; 0x4);
  gsp_phys_rmcall_srv_ctxcommit parameter added (0 = pure server-managed,
  no client promote).
- query prints all 16 entries and records PATCH; query ABI 80-B/5136.

Hardware state after the external-VAS run: GPU wedged, reboot required (no
automated reboot). All shapes stay default-off behind gr_promote=17 +
gsp_phys_srv_ctxbuf.
</content>
</entry>
<entry>
<title>vgsp: host CUDA bridge + sema release recovery; greeneye simulator wave</title>
<updated>2026-10-03T18:05:38+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-03T18:05:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=cc79b478843f0230fe6aa8ecd822de7ba71c891e'/>
<id>urn:sha1:cc79b478843f0230fe6aa8ecd822de7ba71c891e</id>
<content type='text'>
- kernel: gsp_cuda_bridge (QMD launch capture, debugfs job/out/done, param+output resolution cached from inline writes), sema drain fixes (never hold/starve a channel), GR ring autopin + counter autoreg, per-page push reads, counter-derive gate; module builds clean
- tools/cuda-bridge: CUDA driver-API daemon executing mail/vadd kernels on the physical GPU, CUBB2/CBD2 v2 protocol, layout check + self-tests
- tools/guest-diag + tools/cuda-ab: scanner/pin fixes, victory push-only mode
- debug/risc-v-gsp-rm-vm: Phase S simulator wave (GSP device model, boot ladder, triage/re-demo harnesses, docs 30-41), GPGPU-sim scaffolding
- STATE-CURRENT/docs updates
</content>
</entry>
<entry>
<title>kernel: capture the guest's PROMOTE_CTX entries; add promote mode 19 (guest-faithful 9-entry set)</title>
<updated>2026-10-02T19:45:55+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-02T19:45:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=680c0ad248dd54f5778808f19fbb6c2f9835ebab'/>
<id>urn:sha1:680c0ad248dd54f5778808f19fbb6c2f9835ebab</id>
<content type='text'>
- gsp_rm_emulation: dump every guest GPU_PROMOTE_CTX (0x2080012b) params and
  entries so the real client's promote shape is observable (captured on the
  emulation path: MAIN 2 MB PA+VA, PATCH, BUNDLE_CB/PAGEPOOL/ATTRIBUTE_CB/
  RTV_CB_GLOBAL VA-only, FECS, PRIV, UNRESTRICTED)
- gsp_phys_booter: promote mode 19 replays that exact 9-entry shape on the V5
  channel with host buffers (MAIN 2 MB + PDB map, small buffers, booking-only
  VAs); clamp 0..19
- docs/eng-ops: mode-19 result recorded - the server never replied (fn76 -110)
  and the release fail-safe held WPR2/GPU until an approved reboot; mode 19 is
  known-wedging
</content>
</entry>
<entry>
<title>kernel: GR promote mode 18 (client FERMI_CONTEXT_SHARE_A via hContextShare)</title>
<updated>2026-10-02T19:17:34+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-02T19:17:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=1978df065e52e3068b188554c13fd32434e6cd70'/>
<id>urn:sha1:1978df065e52e3068b188554c13fd32434e6cd70</id>
<content type='text'>
- gsp_phys_booter: mode 18 allocates a FERMI_CONTEXT_SHARE_A (0x9067) on the
  TSG with the ladder VAS and carries it as hContextShare on the V6 KMD
  channel, so the share construct can allocate the GraphicsSubcontext the
  single-MAIN promote needs; clamp 0..18
- docs/eng-ops: GR promote bisection row updated with the session-2 results
  (modes 12-18: PA-only accepted but no ENG_CTX_VALID; PATCH/PM/FBMEM and
  server-managed registry all leave the KMD promote at 0x40; wall is the
  commit/RAMFC path)
</content>
</entry>
</feed>
