diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-11 15:13:29 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-11 15:13:29 -0500 |
| commit | a2929ebc5248af20c6018bf4bbd787f941e8711f (patch) | |
| tree | d40e68ec083f4efa349b0a3f247dc73a9d0f68e9 /scripts/ssh_guest.sh | |
| parent | f8decc9a9f57c4c761148bcd944fc01b3d06348a (diff) | |
| download | open-iov-a2929ebc5248af20c6018bf4bbd787f941e8711f.tar.gz open-iov-a2929ebc5248af20c6018bf4bbd787f941e8711f.zip | |
vgsp: verify the scrub ring ledger before authoring (P0 for the X/GL wedge, CONT.427)
- Resolve the channel GPFIFO ring page through the GPU page tables (the
same resolver the stash geometry path trusts) instead of deriving it as
"hsem page - entries*8"; that subtraction is only correct when the
buffer's GPFIFO and sema pages are PA-contiguous, and it could land on a
stale or dense page (r1775/r1777 boots).
- Validate the first read with the strict GPFIFO entry shape (flag bits,
length field, push VA bounded around the channel's own gpfifo) plus a
clean zero terminus (the next slot and the following 32 slots must be
zero). An all-zero page, a dense data page or a dirty tail is not
trusted as a submission ledger.
- Detect a guest scrubber reset by a regressed finish word (or fin
returning to 0 while a release was authored) and reseed the ledger
instead of re-applying the pre-reset absolute count - that
re-application underflowed the guest's scrub-list size (r1775 c6:
4076 into an empty list -> 0xFFFFFFFFFFFFF014 -> the
scrubCheckAndWaitForSize spin, _nv052600rm+0x7b).
- Never author the finish word from an unverified or unresolved ring:
fin stays a no-op. A blocked scrub wait is recoverable; an underflowed
list is not. A/B: sema_scrub_ring=0 skips the ledger entirely.
Live validation of this build is pending (6-cycle wedge acceptance +
GZDoom run).
Diffstat (limited to 'scripts/ssh_guest.sh')
0 files changed, 0 insertions, 0 deletions
