summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_sema_service.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-30 11:19:09 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-30 11:19:09 -0400
commit6baafe6bf116656ba44ec9e904688dc88a0e383f (patch)
tree4004ceddca02e3d8dc5a99c3b9cb9880f0138558 /kernel/gsp_sema_service.c
parente4871d113a0df84abc15c0850b3a4a4fbc35d5ba (diff)
downloadopen-iov-6baafe6bf116656ba44ec9e904688dc88a0e383f.tar.gz
open-iov-6baafe6bf116656ba44ec9e904688dc88a0e383f.zip
sema-svc: targeted 256-byte op + compute-channel release-block tracing (the DtoH op is still invisible)
Diffstat (limited to 'kernel/gsp_sema_service.c')
-rw-r--r--kernel/gsp_sema_service.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index 4ecfe14..8b5f4af 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -353,6 +353,7 @@ struct sema_svc {
u64 memsets_fail;
u64 ring_ops; /* op runs from ring-decoded pushes */
u64 lda_log; /* LAUNCH_DMA inventory budget */
+ u64 sem256_log; /* 256-byte op trace budget */
u64 copy_watch_log; /* sema_copy_watch log budget */
u64 copy_pat_log; /* sema_copy_pat log budget */
u64 copy_dst_log; /* sema_copy_dst log budget */
@@ -2303,6 +2304,13 @@ static void svc_run_ops(struct nv_vgpu_device *vgpu, struct svc_memset_op *ops,
svc.memsets_nomap++;
else
svc.memsets_fail++;
+ if (m->bytes == 256 && svc.sem256_log < 64) {
+ svc.sem256_log++;
+ pr_info("sema-256: type=%u dst=0x%llx src=0x%llx bytes=%llu rc=%d h=0x%x done=%llu nomap=%llu fail=%llu\n",
+ m->type, m->dst, m->src, m->bytes, rc, ch_h,
+ svc.memsets_done, svc.memsets_nomap,
+ svc.memsets_fail);
+ }
if ((rc == 0 && svc.memsets_done <= gsp_sema_ops_log) ||
(rc != 0 && svc.memsets_fail + svc.memsets_nomap <= 64))
pr_info("sema-svc: %s dst=0x%llx value=0x%llx elem=%u count=%u bytes=%llu phys=%u ap=%u src=0x%llx srcphys=%u srcap=%u rc=%d h=0x%x\n",
@@ -3162,6 +3170,14 @@ static void svc_decode_stream(struct nv_vgpu_device *vgpu, const u8 *buf,
* only the copy itself.
*/
if (allow_ops && n_ops && !gsp_sema_skip_ops) {
+ if (ch->engine_type == 0 &&
+ svc.sem256_log < 64) {
+ svc.sem256_log++;
+ pr_info("sema-sem0: h=0x%x va=0x%llx allow=%u n_ops=%u skip=%u\n",
+ ch->h_object, sem_va,
+ allow_ops, n_ops,
+ gsp_sema_skip_ops);
+ }
svc_run_ops(vgpu, ops, n_ops, ch->h_object);
svc.ring_ops++;
ops_runs++;