diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-24 12:07:00 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-24 12:07:00 -0400 |
| commit | 35399ea4513daabe0ffd18443041e9aa45fe90bb (patch) | |
| tree | 95dce2f90fcdbf42c3f1afef6a231da0a02f120c /kernel | |
| parent | c6c152ccc86c0796b626b8cd719e1352e7895996 (diff) | |
| download | open-iov-35399ea4513daabe0ffd18443041e9aa45fe90bb.tar.gz open-iov-35399ea4513daabe0ffd18443041e9aa45fe90bb.zip | |
vgsp-sema r619 diag: log the resolved target (pa/ap/src/rc/rb) of NON-pool device-VA semaphore writes - the r618 hung math client read 0 at 0x20480fef0 while the host's deferred releases advanced cur 97..105 on its own target; this makes the write-target divergence measurable (bounded 512/boot)
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/gsp_sema_service.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c index cdb8067..3f50439 100644 --- a/kernel/gsp_sema_service.c +++ b/kernel/gsp_sema_service.c @@ -4181,6 +4181,7 @@ static int svc_sem_write(struct nv_vgpu_device *vgpu, u32 h, u64 va, u32 val) int wap, rc; bool verified = false; bool rb_ok = false; + static u32 sem_sw_dev_log; /* r619: non-pool device-VA write budget */ /* * Pool semaphores resolve pin -> verified cache -> targeted rm_mem @@ -4240,10 +4241,21 @@ static int svc_sem_write(struct nv_vgpu_device *vgpu, u32 h, u64 va, u32 val) * sysmem semaphore range (0x792..), with the resolver provenance and * the read-back, so the second session's translations can be * compared with the first session's for the same VA. Bounded. - */ - if (va >= 0x79240000000ULL && va < 0x79260000000ULL && - svc.sem_sw_log < 8192) { - svc.sem_sw_log++; + * + * r619 diag: the same proof for NON-pool device-VA writes (>= the VAS + * floor; e.g. 0x20480fef0 push releases, 0x204827f7c QMD releases). + * The r618 hung math client read 0 at 0x20480fef0 while the host's + * deferred releases logged `cur` 97..105 on its own target - a + * write-target divergence that was invisible because this range + * never printed `pa`. Bounded per boot (512). + */ + if (((va >= 0x79240000000ULL && va < 0x79260000000ULL && + svc.sem_sw_log < 8192) || + (va >= SVC_VAS_FLOOR && !is_pool && sem_sw_dev_log < 512))) { + if (va >= 0x79240000000ULL && va < 0x79260000000ULL) + svc.sem_sw_log++; + else + sem_sw_dev_log++; pr_info("sema-sw: h=0x%x va=0x%llx pa=0x%llx ap=%d src=%s val=0x%x rc=%d rb_ok=%d back=0x%x pool=%d\n", h, va, addr, wap, src, val, rc, rb_ok, back, is_pool); } |
