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
commita393ddf66bc81e64b34361ddd596e5e21441a745 (patch)
treefe8f1cae9108f64131737268342fda86b0152207 /kernel/gsp_sema_service.c
parent36d756b52043c85e45e7cfab92543cc3b61f8fdf (diff)
downloadopen-iov-a393ddf66bc81e64b34361ddd596e5e21441a745.tar.gz
open-iov-a393ddf66bc81e64b34361ddd596e5e21441a745.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++;