diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-24 09:38:12 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-24 09:38:12 -0400 |
| commit | 2530e48f2996733809fb0e91a203b8c1cf27920d (patch) | |
| tree | 1728d2918ad33f182ad08914b946e9a2b5c22d60 /tools | |
| parent | f359b91af0b7ee1660a38856bbff05d0132bd50f (diff) | |
| download | open-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
