<feed xmlns='http://www.w3.org/2005/Atom'>
<title>open-iov.git/tools/guest-diag/sempages.py, 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>sema: never execute work decoded from swept RAM; pin only tracker sems</title>
<updated>2026-09-28T13:31:48+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-28T13:31:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=cc1de524d8cea869daacc652108c76f403eb542d'/>
<id>urn:sha1:cc1de524d8cea869daacc652108c76f403eb542d</id>
<content type='text'>
The content sweep reads arbitrary guest RAM and ran the full push decoder on
every page, so fabricated method streams in unrelated data executed
fills/copies: one boot scanned 65M pages, 'decoded' 124k pushes and ran
dozens of memsets from false positives - writes into live guest memory (a
guest kernel crashed in nvidia_uvm right after such a boot).

- Swept pages now only permit the bounded semaphore-release writes; fills
  and copies execute only for pushes the pump read through a trusted ring
  translation.
- Pushes read for a compute (GR) channel apply releases only: their method
  space is not the copy engine's, so aliased encodings must never become
  memory writes.
- sempages.py derives the pages to pin from the client's tracker objects
  (sem object + sem memory) instead of matching bare sem-object shapes, which
  pinned 140 pages where the client has ~53 sems; shape scan remains as a
  fallback when no tracker resolves.
</content>
</entry>
<entry>
<title>sema-svc: apply releases promptly and decode compute-push releases</title>
<updated>2026-09-28T11:34:34+00:00</updated>
<author>
<name>Arthur Hanson Rasmusson</name>
<email>arthur@vgpu.io</email>
</author>
<published>2026-09-28T11:34:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vgpu.io/open-iov.git/commit/?id=2133dd1fd82b4fd37df45e134b9a073f081d49d1'/>
<id>urn:sha1:2133dd1fd82b4fd37df45e134b9a073f081d49d1</id>
<content type='text'>
The content sweep now:
- decodes a release whose method stream continues with any INC_METHOD,
  not only the CE LAUNCH_DMA group, so the releases at the head of a
  compute/GR channel's first push are applied too;
- remembers releases whose target VA had no translation (deferred list)
  and retries them every service pass, so a VA-&gt;PA injection lands them
  immediately instead of after the next full sweep;
- re-arms the fast sliced sweep for a few seconds after an injection;
- treats a channel whose USERD/ring cannot be resolved as stalled, so the
  sweep keeps looking for the releases its unreadable pushes carry.

tools: add per-cdt client-pin helper (sem pages + /dev/nvidia0 windows),
sem-page scanner and memprobe fixes (short-read guard, --brief).
Live-verified: injecting a client sem page applied 12 deferred releases
within a second; the service kept applying (89 -&gt; 202) while cdt ran.
</content>
</entry>
</feed>
