summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 12:34:14 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 12:34:14 -0400
commit475181f8ffedc7291e217406cb9e545a2af4c07e (patch)
tree151976aa63db6123324d5f0db8217d251e201b2e /kernel
parent35399ea4513daabe0ffd18443041e9aa45fe90bb (diff)
downloadopen-iov-475181f8ffedc7291e217406cb9e545a2af4c07e.tar.gz
open-iov-475181f8ffedc7291e217406cb9e545a2af4c07e.zip
vgsp-sema r620: r619's device-VA sem-write witness range used the 1 TiB SVC_VAS_FLOOR and silently excluded the 0x200000000-0x20fffffff VAS window (the release words it exists for) - use the window base so the r618-style write-target divergence is actually logged
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_sema_service.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index 3f50439..e76cb7a 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -4242,16 +4242,18 @@ static int svc_sem_write(struct nv_vgpu_device *vgpu, u32 h, u64 va, u32 val)
* the read-back, so the second session's translations can be
* compared with the first session's for the same VA. Bounded.
*
- * 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).
+ * r619 diag: the same proof for NON-pool device-VA writes (the VAS
+ * window >= 0x200000000; 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`. r620: the first cut used the 1 TiB
+ * SVC_VAS_FLOOR and excluded this very window (no lines ever);
+ * 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))) {
+ (va >= 0x200000000ULL && !is_pool && sem_sw_dev_log < 512))) {
if (va >= 0x79240000000ULL && va < 0x79260000000ULL)
svc.sem_sw_log++;
else