From f03249e1c928b2476f182953748fc5503b3d78cc Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Wed, 7 Oct 2026 15:36:35 -0400 Subject: vgsp: m114 - pre-commit bounce window for the kernel's data (native run w/ copy-in/out) Decisive evidence: the SM walker resolves only the commit-time tree (every late write/install fails: m94, m99-m113; UNSET refused 0x1f). Plant a 112-page bounce window into the main small-PT at stage 3 (slots 0x110..0x17f - the proven win0 pattern), copy the launch's resolved data pages in, pointers are already rewritten to those VAs, and copy results back after the release. The mail message lives at bounce page 100 (c[0x4][0x0]=0x174000). Data cap 100 pages (440 KB), matching the shrunk victory_mail (3 x 128 KB). --- kernel/gsp_sema_service.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'kernel/gsp_sema_service.c') diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index caaaae3..24b3adf 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -9562,6 +9562,9 @@ static bool svc_gr_page_inline_covers(u64 page) * the demo buffers are small on the native path). */ #define SVC_GR_DATA_PAGES_PER_PTR 64u +/* m114: total pages the pre-commit bounce window can carry (slot 100 is + * the mail message). */ +#define SVC_GR_DATA_BOUNCE_MAX 100u static void svc_gr_data_fill(struct nv_vgpu_device *vgpu) { @@ -9633,7 +9636,7 @@ static void svc_gr_data_fill(struct nv_vgpu_device *vgpu) continue; /* already mapped */ if (svc_resolve_va(vgpu, va, &pa, &ap)) break; - if (svc_fwd_req.gr_n_data >= SVC_GR_DATA_MAX) + if (svc_fwd_req.gr_n_data >= SVC_GR_DATA_BOUNCE_MAX) return; rec = &svc_fwd_req.gr_data[svc_fwd_req.gr_n_data]; rec->va = va; -- cgit v1.2.3