<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git/tools, branch master</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=master</id>
<link rel='self' href='https://git.vgpu.io/open-iov.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/'/>
<updated>2026-10-12T04:47:10+00:00</updated>
<entry>
<title>site: repository links use cgit tree URLs; external repo-link audit</title>
<updated>2026-10-12T04:47:10+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T04:47:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=5802137750f45d64d3c4ee4f2de6b825b28f163a'/>
<id>urn:sha1:5802137750f45d64d3c4ee4f2de6b825b28f163a</id>
<content type='text'>
- titles.json: map relative doc links to https://git.vgpu.io/open-iov.git/tree/...
  (the host runs cgit; /blob/ URLs do not exist)
- check_site.py: verify every git.vgpu.io URL on every page resolves (HTTP
  status check, cached, with backoff)
- site pages: repository home links point at the .git/ URL
- .publish-manifest.json: revised revision records
</content>
</entry>
<entry>
<title>site: open-iov.org 2026 documentation update</title>
<updated>2026-10-12T04:32:00+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T04:32:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=5b4f18952f18f29409195e10fa4f9ece6f036c31'/>
<id>urn:sha1:5b4f18952f18f29409195e10fa4f9ece6f036c31</id>
<content type='text'>
- tools/site: Markdown-to-MediaWiki converter (tracked-paths-only link
  mapping, local-marker scan, About-message insert), WikiBot publisher
  with diff/check modes and publish manifest, live site auditor, image
  uploader, site-only page sources (landing page, About, index, sidebar,
  banner templates, About-message template).
- wiki: new public deep-dive sources (project status, install, FAQ,
  system overview, GSP and GSP-RM, execution frontier, host module,
  guest stack, UVM, physical backend, driver lifecycle, risc-v-gsp-rm-debugger,
  hardware/software matrix, HAAEEP, glossary); refreshed CUDA userspace
  status; corrected cross-document links; README rewritten for the new set.
- wiki/.publish-manifest.json records each published revision for rollback.
</content>
</entry>
<entry>
<title>cuda-ab: soak.sh client list env-overridable (SOAK_CLIENTS); smiley last by default</title>
<updated>2026-10-12T03:44:24+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T03:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=40a01810c77838b3876ecea8fed2f5d72e08a378'/>
<id>urn:sha1:40a01810c77838b3876ecea8fed2f5d72e08a378</id>
<content type='text'>
smiley (cudaMallocManaged-class, known-failing until the param-offset
fix) moved last so a baseline pass exercises the other 13 first.
</content>
</entry>
<entry>
<title>cuda-ab: victory-series coverage battery (8 new clients) + soak runner list</title>
<updated>2026-10-12T03:44:06+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T03:44:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=ccdfc1b2cc31a04110783e96a310f5ed36ca0a9d'/>
<id>urn:sha1:ccdfc1b2cc31a04110783e96a310f5ed36ca0a9d</id>
<content type='text'>
victory_saxpy, victory_reduce (shared+atomics), victory_matmul (tiled
shared), victory_strided, victory_memset2d (pitched), victory_atomics,
victory_streams_events (3 streams + events), victory_math (mixed
int/float/double). Each verifies via readback and prints STATUS OK|FAIL.
soak.sh now runs the full 14-client set (seq or sustained).
</content>
</entry>
<entry>
<title>guest-diag: semfix_watch read64 uncached by default (stale-cache pool-pin failure)</title>
<updated>2026-10-12T01:53:46+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T01:53:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=7de0cfd365e9c8b9fa8385c5cde60bbbbb7a3ddb'/>
<id>urn:sha1:7de0cfd365e9c8b9fa8385c5cde60bbbbb7a3ddb</id>
<content type='text'>
The watcher's resolve_sem_pool read sem-&gt;page-&gt;mem-&gt;vas through a
process-lifetime cache: a transient zero captured while UVM was still
initialising the structures was served forever, the pool pin never
landed, and the second-session client hung in cudaMallocManaged
(r88 evidence: 'pool unresolved (retry)' from the watcher while the
same walk succeeded from a fresh QMP client). Cache is now opt-in.
</content>
</entry>
<entry>
<title>guest-diag: scanner EOF guard + exclude non-client nvidia fd holders</title>
<updated>2026-10-12T01:17:55+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T01:17:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=9996ac4a93458d6d22085721e2cef18ed41c9215'/>
<id>urn:sha1:9996ac4a93458d6d22085721e2cef18ed41c9215</id>
<content type='text'>
Two failure modes found when the scanner detects clients by device fd:
a transient boot nvidia-smi was picked and its exited pagemap read back
EOF, and scan_window advanced by got=0 forever (busy spin, no stream);
and non-client nvidia fd holders must never be committed to. Break on
got&lt;=0 in scan_window (scan_range already did), skip nvidia-smi/
persistenced/Xorg, and prefer /dev/nvidia-uvm holders.
</content>
</entry>
<entry>
<title>guest-diag: scanner detects arbitrary CUDA clients by nvidia fds</title>
<updated>2026-10-12T01:08:05+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T01:08:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=d2c9054b096e63ca3dd4f890514639f7efd82c3f'/>
<id>urn:sha1:d2c9054b096e63ca3dd4f890514639f7efd82c3f</id>
<content type='text'>
The guest pin scanner only tracked processes whose comm matched
CLIENT_PREFIXES (cdt,va,victory). An arbitrary CUDA binary (e.g.
/tmp/smiley) was invisible: no pages streamed, no VA-&gt;PA pins injected,
the service could not read its pushes and the client hung in
cudaMalloc/uvm_tracker_wait. Detect compute clients by the CUDA device
they hold open (/dev/nvidia-uvm preferred, then any /dev/nvidia*), with
the prefix match kept as the first-choice path.
</content>
</entry>
<entry>
<title>tools/guest-diag: single user netdev for QEMU (fix SSH pre-auth stall)</title>
<updated>2026-10-12T00:33:05+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-12T00:33:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=c973ec566abc6d71c58b591ca45237f2725092ef'/>
<id>urn:sha1:c973ec566abc6d71c58b591ca45237f2725092ef</id>
<content type='text'>
The launch line carried both an explicit rtl8139 on netdev net0 and a
stray '-net user,hostfwd=tcp::2222-:22 -net nic' pair, creating a SECOND
slirp network with a second NIC and a second 2222 forward. The SSH
connection landed on one slirp instance while the guest's replies left
through the other interface, stalling the handshake before auth. The
explicit rtl8139 now owns the only user netdev with the 2222 forward.
The generated launch_qemu_rootport.run.sh is patched in place by the
harness from the same line.

Verified: sshpass -p ubuntu ssh -p 2222 ubuntu@127.0.0.1 -&gt; nvidia-smi
green. Guest-side companion fix (persisted in the qcow2 image): the
cloud image's /etc/ssh/sshd_config.d/60-cloudimg-settings.conf set
PasswordAuthentication no; it is now yes.
</content>
</entry>
<entry>
<title>vgsp-sema+guest-diag: fix CE USERD discovery for re-registered sessions (ISSUE-0002)</title>
<updated>2026-10-09T18:45:12+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-09T18:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=439cb2e0b28267a9e2645b9555e85f0dd3008c1b'/>
<id>urn:sha1:439cb2e0b28267a9e2645b9555e85f0dd3008c1b</id>
<content type='text'>
svc_chan_userd now prefers the layout-derived CE USERD
(ring_pa + 0x10000 in the ring aperture) and accepts it while idle, so
a second session cannot latch onto the registered pool-relative offset
when that alias holds a DIFFERENT rank's stale USERD: r40 c2 rank0 read
rank3's stale 1/1 at FB 0xf0000 and the pump never followed rank0's own
GP_PUT (guest GPUT mapping for gpFifoGpuVa proves ring+0x10000).

guest_pin_stream.va_to_pa drops translations outside the registered
guest-RAM windows so BAR1-phys addresses (0x70000xxxxx) are no longer
injected as SYS pins; r40 rank2's ring resolved to the bogus
pa=0x70000c0000 ap=SYS and read 66/66.
</content>
</entry>
<entry>
<title>guest-diag: accept both GPFIFO ring windows and validate channel_info for #put (ISSUE-0002 diag)</title>
<updated>2026-10-09T18:23:05+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-09T18:23:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=2fef15f30e2a839070216fa497875978c52c02e7'/>
<id>urn:sha1:2fef15f30e2a839070216fa497875978c52c02e7</id>
<content type='text'>
CE channels register gpfifo=0x121010000+0x30000*rank, outside the
GR-only window [0x200200000,0x200400000) the #put resolver searched, so
no #put line ever fired for the CE channels the second session stalls
on. Resolve channel_info from both windows with layout validation, keep
re-resolving the channel after the pool mem has resolved, reset the
#put map on client switch, and add bounded resolver diagnostics to the
guest log.
</content>
</entry>
</feed>
