diff options
Diffstat (limited to 'kernel/gsp_sema_service.c')
| -rw-r--r-- | kernel/gsp_sema_service.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index 830b1d7..0be279e 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -9560,8 +9560,12 @@ static bool svc_gr_page_inline_covers(u64 page) * Per candidate pointer, map at most this many pages from the pointer's * page onward (the engine-visible main-PT window has ~220 free 4 KB slots; * the demo buffers are small on the native path). + * m120: lowered 64 -> 32 so every pointer page fits under the 100-page + * bounce cap (mail 2x32=64, vadd 3x32=96); at 64/ptr the second/third + * candidate run was truncated by the cap and its pointer word never + * rewritten (m119: first LDG base c[0x0][0x168] possibly untouched). */ -#define SVC_GR_DATA_PAGES_PER_PTR 64u +#define SVC_GR_DATA_PAGES_PER_PTR 32u /* m114: total pages the pre-commit bounce window can carry (slot 100 is * the mail message). */ #define SVC_GR_DATA_BOUNCE_MAX 100u @@ -9620,6 +9624,7 @@ static void svc_gr_data_fill(struct nv_vgpu_device *vgpu) for (w = 0; w < n_cand; w++) { u64 base = wins[w]; u32 p; + u32 before = svc_fwd_req.gr_n_data; for (p = 0; p < SVC_GR_DATA_PAGES_PER_PTR; p++) { u64 va = wins[w] + (u64)p * SEMA_PAGE_SIZE; @@ -9636,8 +9641,12 @@ 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_BOUNCE_MAX) + if (svc_fwd_req.gr_n_data >= SVC_GR_DATA_BOUNCE_MAX) { + pr_info("vgsp-sema: svc-gr data fill: %u candidate ptrs, %u pages resolved (reloc 0x%llx+) CAP-HIT\n", + n_cand, svc_fwd_req.gr_n_data, + (u64)SVC_GR_DATA_RELOC_BASE); return; + } rec = &svc_fwd_req.gr_data[svc_fwd_req.gr_n_data]; rec->va = va; rec->pa = pa & ~(u64)(SEMA_PAGE_SIZE - 1); @@ -9647,6 +9656,9 @@ static void svc_gr_data_fill(struct nv_vgpu_device *vgpu) svc_fwd_req.gr_n_data++; } (void)base; + pr_info("vgsp-sema: svc-gr candidate[%u] base=0x%llx -> %u new pages (total %u)\n", + w, base, svc_fwd_req.gr_n_data - before, + svc_fwd_req.gr_n_data); } pr_info("vgsp-sema: svc-gr data fill: %u candidate ptrs, %u pages resolved (reloc 0x%llx+)\n", n_cand, svc_fwd_req.gr_n_data, (u64)SVC_GR_DATA_RELOC_BASE); |
