<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git/tools/guest-diag/ioctl_trace.c, 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-09-26T07:07:57+00:00</updated>
<entry>
<title>tools/guest-diag: decode engine-list, classlist and CE-cap RM control replies in the ioctl tracer</title>
<updated>2026-09-26T07:07:57+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-26T07:07:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=b84c6dee395dfad6d17b454f83f760053375f791'/>
<id>urn:sha1:b84c6dee395dfad6d17b454f83f760053375f791</id>
<content type='text'>
</content>
</entry>
<entry>
<title>kernel: coherent GSP-RM replies for engine-context creation</title>
<updated>2026-09-23T15:46:33+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-23T15:46:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=5c47eacbe01f9353f2c21d96e1a3eb15a63fd991'/>
<id>urn:sha1:5c47eacbe01f9353f2c21d96e1a3eb15a63fd991</id>
<content type='text'>
- GSP_RM_ALLOC: echo the request payload back with status forced to NV_OK.
  The kernel driver copies the reply params over the caller's params buffer
  using the class-expected size, so a zeroed reply smashed libcuda's stack
  (SIGSEGV at the engine-registration continuation); echoing makes the
  copy-back idempotent.
- CE_GET_PHYSICAL_CAPS / CE_GET_ALL(_PHYSICAL)_CAPS: report sysmem, P2P and
  BL copy caps and mark the GR-synchronous CE (GRCE, COPY0). Without a GRCE
  the client's context walk ends with an empty secondary-engine record and
  the engine RM alloc is issued with class 0 (rejected -&gt; cuCtxCreate fails).
- TU104 engine table: CE0 shares the GR PBDMA ids (the driver's GR/GRCE
  runqueue validation requires it), plus an entry for the async copy engine
  (COPY14) advertised in the GSP static info engine caps.
- tools/guest-diag/ioctl_trace: decode the RM status fields of alloc,
  control and free so the first failing driver call is visible in traces.

gitignore: keep the CUDA analysis scratch tree (incl. WORKING-HERE.md) local.
</content>
</entry>
<entry>
<title>userspace/cuda: libcuda analysis tree (debug-focused), guest ioctl tracer</title>
<updated>2026-09-23T11:05:45+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-23T11:05:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=54ca82d81bacb56197a607d0039ca6a015f5ac44'/>
<id>urn:sha1:54ca82d81bacb56197a607d0039ca6a015f5ac44</id>
<content type='text'>
Analysis tooling for debugging CUDA execution in Open-IOV guests:
- userspace/cuda/570.144/: fetch a library from a running guest (nc),
  objdump helpers, crash ip -&gt; file vaddr + symbol mapping, and Ghidra
  headless import/analysis/decompile scripts (project kept so single
  functions decompile in seconds). The purpose is debugging correctness
  and performance of CUDA in Open-IOV VMs (not a reimplementation);
  extracted binaries and decompiled output are gitignored.
- tools/guest-diag/ioctl_trace.c: ptrace tracker for the NVIDIA driver
  ioctls of a child (libcuda issues raw syscalls, so LD_PRELOAD sees
  nothing). Decodes RM_ALLOC (class) and RM_CONTROL (cmd) arguments;
  this is how the cuCtxCreate crash sequence was captured.
- tools/test/cuda_drv_test.c: unbuffered + per-call markers so a crash
  identifies the CUDA call it happened in.
</content>
</entry>
</feed>
