<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git, branch gr-forwarding</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=gr-forwarding</id>
<link rel='self' href='https://git.vgpu.io/open-iov.git/atom?h=gr-forwarding'/>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/'/>
<updated>2026-10-05T17:06:39+00:00</updated>
<entry>
<title>vgsp: guest GR forwarding backend and capture (gsp_phys_gr_forward, default off)</title>
<updated>2026-10-05T17:06:39+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T17:06:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=ae507e6f241c7e3498728f9d1ffc2d41ede5cd64'/>
<id>urn:sha1:ae507e6f241c7e3498728f9d1ffc2d41ede5cd64</id>
<content type='text'>
Add a default-off guest GR (compute) forwarding path so a guest CUDA
launch submitted on its GR channel can be executed by the physical GR
engine on the ladder channel, with fail-closed fallback to the host CUDA
bridge and the unchanged software release path.

- New module parameter gsp_phys_gr_forward (default 0) and accessor.
- New GR execution gate: boot_stage.rmcall_gr_exec_ok, latched only after
  a real GR submission logs REAL GR SEM OK; the backend refuses while it
  is unset.
- Sema capture: a completed 64-word inline QMD on a trusted, non-replay
  GR decode becomes an svc_gr_cand (push identity, decoded release0,
  parameter/program/pointer fields, up to 8 captured inline-write
  records); the CUDA bridge stays authoritative while the parameter is
  off and is reached in order forward -&gt; bridge -&gt; software release.
- Backend: gsp_phys_backend_guest_gr_submit() maps pages at their own
  guest VAs through fresh Tier-1 small-PT pages/PDE installs or relocates
  inline-captured pages to ladder shadow pages (Tier 2), builds
  SET_OBJECT + the inline-QMD method run + REPORT_SEMAPHORE on the
  compute subchannel, reuses the shared GPFIFO/USERD/doorbell publish
  tail (extracted from the CE submit path, CE bytes unchanged) and polls
  the QMD release and/or module semaphore, draining the epoch-gated
  fault queue on timeout.
- Sema wiring: GR requests reuse the INFLIGHT/hold/deferral machinery so
  the guest channel release applies only on the submit's success/failure
  edge; hold shims preserve the channel engine type.
- Counters and a work_gr state line plus a stats accessor.
- Bounds are fixed: 16 pages, 8 inline records, 64 QMD words; every
  pointer/size checked, pool exhaustion and stale mappings fail closed.
- New ABI layouts pinned with static_asserts.

Compile-only change: no device test performed.
</content>
</entry>
<entry>
<title>vgsp: GR ctx query ABI fix, server-managed ctx map exclusion, raw diag capture</title>
<updated>2026-10-05T16:50:44+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:50:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=d647c93e9375dc47613e0a554445e4b49467f119'/>
<id>urn:sha1:d647c93e9375dc47613e0a554445e4b49467f119</id>
<content type='text'>
- NV2080_CTRL_GR_CTX_BUFFER_INFO is 80 bytes (NvBool is NvU8: flags at
  56..59, uuid at 60) and the params are 5136 bytes, not 5648; the previous
  ABI mismatch is why GR_GET_CTX_BUFFER_INFO returned NV_ERR_INVALID_ARGUMENT
  (0x1f) on every shared-VAS cycle.
- Under gsp_phys_srv_ctxbuf the GSP-RM server allocates/maps/commits the
  engine context itself: do not install the client GR context-window PDEs and
  do not map the client ctx VA in the PDB, so a client mapping cannot clobber
  the server's own context-window page table.
- Dump the server-written INSTANCE/RAMFC chunks after BIND/SCHEDULE on the
  shared GR path so the committed engine-context pointer/VA can be located.
- Emit the full NOCAT diag buffer as 16-byte hex rows (the printable copy is
  capped at 192 dotted bytes and hides binary fault dumps).
Untested on hardware at commit time; the next supervised GR cycle validates.
</content>
</entry>
<entry>
<title>vgsp: fix per-type VRAM type lookup and canonical FB-size encoding</title>
<updated>2026-10-05T16:47:47+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:47:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=0f227d063e281c4b8ec21e61132ae1ddf0920053'/>
<id>urn:sha1:0f227d063e281c4b8ec21e61132ae1ddf0920053</id>
<content type='text'>
The 708a3802 per-type VRAM change stripped an nvidia- prefix from
mdev-&gt;type-&gt;sysfs_name, but sysfs_name is the registered type name
verbatim; the mdev core only prefixes the type DIRECTORY with the parent
driver string. Every lookup failed, so all mdevs silently fell back to
512 MiB, nvidia-vgpu-turing-1g was unreachable and available_instances
capped at 1. Match sysfs_name directly in get_available,
show_description and mdev_create.

Also canonicalise the NV_PFB_PRI_MMU_LOCAL_MEMORY_RANGE encoder
(BAR0+0x100ce0) by stripping factors of two from MAG so 512 MiB encodes
0x19 again (1 GiB 0x1a, 2 GiB 0x1b) instead of the non-canonical 0x204.

Default-512M behaviour is now byte-equivalent to the known-good pre-VRAM
module except max_instances=2. Module sha256 cb1724d3.
</content>
</entry>
<entry>
<title>vgsp: per-mdev emulated VRAM size (1.0 multiple mediate sizes)</title>
<updated>2026-10-05T16:25:05+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:25:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=708a3802824358c1770d5ad0b3c2e24fae114eb8'/>
<id>urn:sha1:708a3802824358c1770d5ad0b3c2e24fae114eb8</id>
<content type='text'>
- nv_vgpu_type_info/ioctl gain vram_mb; nv_vgpu_device gains fb_emul_size
  bound from the mdev type at create (default 512 MiB).
- New nvidia-vgpu-turing-1g type (1024 MiB); turing max_instances 1 -&gt; 2;
  show_description reports the per-type framebuffer and max_instance.
- Thread fb_emul_size through GSCI fb_length/region/frtsOffset, WPR2,
  NV_PFB_PRI_MMU_LOCAL_MEMORY_RANGE, the vidmem allocator bound and the BAR1
  shadow; bar_info callback uses the per-device size.
- UNTESTED at commit time: builds clean; validation blocked by the Xid 140
  incident (reboot pending). See Handoff-vGPU-IO.md ADDENDUM 48.
</content>
</entry>
<entry>
<title>vgsp: GR shared path ctx-window PDE install and PATCH+MAIN PA-only promote fallback</title>
<updated>2026-10-05T16:15:30+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:15:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=f90b1a123a60dea44ac98f05529ec2fd545c26eb'/>
<id>urn:sha1:f90b1a123a60dea44ac98f05529ec2fd545c26eb</id>
<content type='text'>
- UPDATE_PDE_2 now also installs the GR context window PT pages (PDE 17+).
- The shared-path fallback promotes PATCH then MAIN PA-only (mode-13 order,
  the real client's set); the mapped (bNonmapped=0) entry still hits the
  known 0x40 structural gate and is not sent.
- Shared+srvctx: channel/BIND/schedule/token/GPFIFO fetch all green; the
  remaining failure is ROBUST_CHANNEL_GR_FAULT_DURING_CTXSW (0x2c).
</content>
</entry>
<entry>
<title>STATE-CURRENT: 12:16 check-back snapshot (GR stage-4 frontier: PBDMA fetches GPGet=1, ctxsw fault 0x2c; 10 clean no-wedge cycles; GR fixes committed)</title>
<updated>2026-10-05T16:14:38+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:14:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=6f9a8b4b6f0a96e2f5bb97f18aef63371da79894'/>
<id>urn:sha1:6f9a8b4b6f0a96e2f5bb97f18aef63371da79894</id>
<content type='text'>
</content>
</entry>
<entry>
<title>vgsp: GR ladder shared-VAS page-table install and server-managed ctx commit path</title>
<updated>2026-10-05T16:12:47+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:12:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=a9fd600193b2cb4d4393a2600f8ff9fc973fecdf'/>
<id>urn:sha1:a9fd600193b2cb4d4393a2600f8ff9fc973fecdf</id>
<content type='text'>
- DMA_UPDATE_PDE_2 client control installs the ladder leaf PT through the
  server's own MMU walker on the shared-management VAS (the raw-PDB entries
  are not preserved by the root migration); FLUSH_PDE_CACHE + post-install
  refill + PT diagnostics.
- srvctx registry profile also disables split VAS management; MAP_MEMORY_DMA
  is not served by GSP-RM for this client (NV_ERR_INVALID_FUNCTION), so the
  PDE control replaces it.
- shared-path context commit helper: GPU_INITIALIZE_CTX + PA-only
  GPU_PROMOTE_CTX for the server-reported (or client fallback) MAIN buffer;
  GR_GET_CTX_BUFFER_INFO sends bufferCount=64.
- Result: shared VAS + srvctx no longer wedges; channel/BIND/schedule/token
  green, PBDMA fetches the GPFIFO (GPGet=1); remaining wall is
  ROBUST_CHANNEL_GR_FAULT_DURING_CTXSW (0x2c).
</content>
</entry>
<entry>
<title>STATE-CURRENT: hourly check-back snapshot (2026-10-05 12:12:01)</title>
<updated>2026-10-05T16:12:01+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T16:12:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=cf1041e7144db5ee87686fcd4ae9984c423f0a3c'/>
<id>urn:sha1:cf1041e7144db5ee87686fcd4ae9984c423f0a3c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>STATE-CURRENT: 10:38 check-back snapshot (campaign 239-242 green; 243b live; committed experiment e7ff3bf7)</title>
<updated>2026-10-05T14:39:31+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T14:39:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=d350fb6eb56c67fd8a435f4f41f7b81d7c62c7cb'/>
<id>urn:sha1:d350fb6eb56c67fd8a435f4f41f7b81d7c62c7cb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>STATE-CURRENT: 10:12 check-back snapshot (hold-all-unreadable experiment committed, module e7ff3bf7, campaign 239-262 validating)</title>
<updated>2026-10-05T14:15:49+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-05T14:15:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=e8e31431469f347b9dae8c0e33db23faafa51965'/>
<id>urn:sha1:e8e31431469f347b9dae8c0e33db23faafa51965</id>
<content type='text'>
</content>
</entry>
</feed>
