<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git/tools/guest-diag/track_waits.sh, 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-08T15:53:20+00:00</updated>
<entry>
<title>spdx: add BSD-3-Clause identifiers to userspace/tools/scripts sources</title>
<updated>2026-10-08T15:53:20+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-10-08T15:53:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=2ee4fe8f43b0dc3e080c91931eadade1fd636c27'/>
<id>urn:sha1:2ee4fe8f43b0dc3e080c91931eadade1fd636c27</id>
<content type='text'>
Sweep of the 155 tracked C/Python/shell files under userspace/ (excluding
the MIT-licensed vendored userspace/extern/), tools/ and scripts/ that had
no per-file license identifier. Each gains the minimal two-line header in
the area's existing form: 'SPDX-License-Identifier: BSD-3-Clause' plus
'Copyright (c) 2026 Open-IOV contributors'; shebang and coding lines stay
first. No other content touched. kernel/** is deliberately out of scope
(recorded as a follow-up in CODESTD-REPORT-2026-10-08.md): its SPDX
coverage and MODULE_LICENSE normalization need their own GPL-2.0 pass.
</content>
</entry>
<entry>
<title>guest-diag: single-read counter sampler (kills phantom 4-of-20 view); vmrestart reaps stale watchers</title>
<updated>2026-09-29T22:01:12+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-29T22:01:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=481959e340efb941905ec17280a3eb588f4df45b'/>
<id>urn:sha1:481959e340efb941905ec17280a3eb588f4df45b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>guest-diag: non-blocking trace tail + 100ms scan loop + raw counter-page dump</title>
<updated>2026-09-29T20:51:57+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-29T20:51:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=74260a836396607ded3f7d64494a27802d30abcd'/>
<id>urn:sha1:74260a836396607ded3f7d64494a27802d30abcd</id>
<content type='text'>
- the trace tail (subprocess + 256KB read) ran inside the scan loop and
  blocked it for seconds exactly when the client's GR window appeared;
  moved to a background thread whose queue the loop drains.
- scan interval 250ms -&gt; 100ms.
- track_waits sampler also dumps 512 raw bytes at page+0xe00 each sample:
  the per-slot reads disagreed with the bulk dump within one sample
  because host writes land between the two, and the raw dump is the only
  trustworthy view of the slot layout.
</content>
</entry>
<entry>
<title>guest-diag: cheaper trace read, optional push sampler, bigger pagemap batches</title>
<updated>2026-09-29T18:47:17+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-29T18:47:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=0cbe5604adff2bc386960edbc58f45e35e61bae8'/>
<id>urn:sha1:0cbe5604adff2bc386960edbc58f45e35e61bae8</id>
<content type='text'>
Under load the semfix poll grepped the whole (growing) trace file and the
track_waits push block spawned three guest processes per sample, both of
which slowed the pin path into the client's failure window. The trace read
now tails 128 KB; track_waits.sh gates the push dump behind PUSH=0; the
pagemap helper reads 32 KB chunks.
</content>
</entry>
<entry>
<title>kernel: authoritative host-injected VA-&gt;PA pins (ipin table) + wider pin table</title>
<updated>2026-09-29T17:52:49+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-29T17:52:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=6e0efb5bb1282c673f0b4ea0eba0022cbb16ab31'/>
<id>urn:sha1:6e0efb5bb1282c673f0b4ea0eba0022cbb16ab31</id>
<content type='text'>
The CE push-buffer page 0x120000000 resolved to a zero-filled page even after
sema_map_add injected the correct translation: the shared pin table silently
dropped inserts once a hash cluster exceeded the 32-probe window (the page
hashes to slot 0, a hot cluster), and lookups fell through to the
content-scanned map and answered with a stale page - so every CE push read as
implausible and memset stayed 0. Injected translations now live in a separate
authoritative table checked before every other source and are never written by
self-discovery; the general pin table is 4x larger with a 4x probe window and
counts drops (pin_drop/ipin_drop) in the stats line. guest_kprobes.sh disables
the kprobe group before removal (EBUSY) and matches p:kprobes/&lt;name&gt;; the
guest wait sampler can run counters-only with GDB=0.
</content>
</entry>
<entry>
<title>sema-svc: async VA-&gt;PA injection queue; guest-diag: fast counter+pin injector, wait sampler</title>
<updated>2026-09-29T15:55:15+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-29T15:55:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=737aea63e67aef4c8dbc1bdf496138215aaaff3e'/>
<id>urn:sha1:737aea63e67aef4c8dbc1bdf496138215aaaff3e</id>
<content type='text'>
</content>
</entry>
</feed>
