summaryrefslogtreecommitdiffstats
path: root/tools
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
commit2530e48f2996733809fb0e91a203b8c1cf27920d (patch)
tree1728d2918ad33f182ad08914b946e9a2b5c22d60 /tools
parentf359b91af0b7ee1660a38856bbff05d0132bd50f (diff)
downloadopen-iov-2530e48f2996733809fb0e91a203b8c1cf27920d.tar.gz
open-iov-2530e48f2996733809fb0e91a203b8c1cf27920d.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 'tools')
0 files changed, 0 insertions, 0 deletions