summaryrefslogtreecommitdiffstats
path: root/scripts/launch_qemu_vgpu.sh
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-24 09:38:12 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-24 09:38:12 -0400
commit10999b470e934d420eb4a7da227d153edb00f135 (patch)
tree82652f0570c5345d11fdcbd8a273451d775fe16f /scripts/launch_qemu_vgpu.sh
parentcd3ff2e0d91613e916b6397c57e89ebbc97afa07 (diff)
downloadopen-iov-10999b470e934d420eb4a7da227d153edb00f135.tar.gz
open-iov-10999b470e934d420eb4a7da227d153edb00f135.zip
kernel: self-configure CE rings and push buffers in the semaphore service
The service pins the CE channel rings and push buffers without any guest-supplied addresses. Rings are derived from the channel rank among the live CE channels (ring at FB 0x80000 + 0x20000*rank, USERD at ring + 0x10000) and verified against the ring's first GPFIFO entry before the pin is stored. Push-buffer base pages are found by their first-push signature (SET_OBJECT on subchannel 0, SET_OBJECT on the compute subchannel, tracking-semaphore release at page offset 0x10 with payload 1); the release's in-page slot offset names the channel and the ring's first entry names the push-buffer VA, then the whole 1 MB region is pinned and marked hot. Pinning a pair also re-arms the page-directory discovery and feeds it the verified VA/PA pairs as samples, so the walk can translate the parts of the pool no base page describes. With rings and push buffers pinned the pump executes the submitted work (gpfifo done grows, semaphore releases apply, released kept in vidmem) and the guest kernel UVM waits complete.
Diffstat (limited to 'scripts/launch_qemu_vgpu.sh')
0 files changed, 0 insertions, 0 deletions