diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 22:25:03 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 22:25:03 -0400 |
| commit | 1c147816c12d1ca85fd5092d417d503eb86c6476 (patch) | |
| tree | 0d414593c6815ca007040ddc0d99c2f0eb79865e /kernel/gsp_sema_service.c | |
| parent | 7eb410a59fa94e69cd6332ed8bf862d58e7d0cee (diff) | |
| download | open-iov-1c147816c12d1ca85fd5092d417d503eb86c6476.tar.gz open-iov-1c147816c12d1ca85fd5092d417d503eb86c6476.zip | |
vgsp-gr r585: demand the fill's dropped pages through the pin channel (the staging-pin coverage class)
The r584 boot's matmul draw: GR-DEC push=0x20043be64 n_data=2 dropped=18
partial=1 stalled=1 -> the r543 argument defer expired -> r564 degenerate
refusal -> SW completion -> MATMUL bad=65536 csum=0. The dropped pages
(the client's staging buffers 0x71b662c00000/c40000/c80000,
0x7dd0cac00000, kind=a) had NO injected mapping: the host pin stream's
demand loop only parses "stalled VA #N: 0x..." lines, and the GRFILL-DROP
line format is invisible to it - so the fill's retries never saw pins and
the launch was SW-completed without running.
r585: svc_log_stalled_va() for each dropped page (up to the 4 detailed per
episode; the helper dedups per boot and the episode marker bounds the
rate). The host demand loop (<=3 s) then pushes the VA to the guest
scanner, whose pin lands inside the launch's bounded defer window on the
retry - the demand path that already heals every other unresolved-VA
class, now connected to the fill drops.
Diffstat (limited to 'kernel/gsp_sema_service.c')
| -rw-r--r-- | kernel/gsp_sema_service.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 6e0d88b..24cb034 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -20695,10 +20695,29 @@ static void svc_gr_data_fill(struct nv_vgpu_device *vgpu, u32 dl; svc_gr_drop_log_va = svc_fwd_req.gr_push_va; - for (dl = 0; dl < 4 && dl < dropped_pages; dl++) + for (dl = 0; dl < 4 && dl < dropped_pages; dl++) { + /* + * r585: DEMAND the dropped pages through the + * pin channel. The host pin stream parses the + * "stalled VA #N: 0x..." lines (svc_log_stalled_va) + * and pushes each VA to the guest scanner within + * ~3 s, whose pin then lands inside the launch's + * bounded argument-defer window - the r584 matmul + * draw dropped 18 staging pages that were NEVER + * demanded (the GRFILL-DROP line format is + * invisible to the host's demand regex), the r543 + * defer window expired, and the r564 degenerate + * refusal SW-completed a launch that wrote + * nothing (MATMUL bad=65536 csum=0). One demand + * per page per boot (svc_log_stalled_va dedups); + * one episode per launch push VA (the marker + * above). + */ + svc_log_stalled_va(drop_va[dl]); pr_info("vgsp-gr: GRFILL-DROP va=0x%llx kind=%c idx=%u\n", drop_va[dl], drop_kind[dl], drop_idx[dl]); + } } } if (svc_gr_data_stalled) |
