summaryrefslogtreecommitdiffstats
path: root/tools/cuda-ab/p2/src/p2_streams.cu
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-11 15:13:29 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-11 15:13:29 -0500
commita2929ebc5248af20c6018bf4bbd787f941e8711f (patch)
treed40e68ec083f4efa349b0a3f247dc73a9d0f68e9 /tools/cuda-ab/p2/src/p2_streams.cu
parentf8decc9a9f57c4c761148bcd944fc01b3d06348a (diff)
downloadopen-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 'tools/cuda-ab/p2/src/p2_streams.cu')
0 files changed, 0 insertions, 0 deletions