summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_sema_service.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index c93ecc9..56cfefa 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -17042,20 +17042,17 @@ static void svc_gr_ring_autopin(struct nv_vgpu_device *vgpu,
return; /* wait until the CE channels are known */
/*
- * SESSION 148 perf (r858 evidence): the RC-watchdog channel's ring
- * page sits at (notifier_pa page + 0x400) in EVERY observed boot -
- * r848: notif 0x11b689420 -> ring 0x11b689400; r853: 0x11b8a6420
- * -> 0x11b8a6400; r858: 0x102e04420 -> 0x102e04400. The registered
- * notifier PA is guest truth from the channel alloc, so this
- * derivation is deterministic; the trusted walk resolved the same
- * ring 14 s LATE on r858 (77280 registered, 77294 walk) and, on the
- * failing boots, inside that window the driver's DMA test read
- * zeros/garbage -> "Failed to initialize DMA" and guest vmap-lock
- * livelocks followed. Content-gated by the standard candidate probe
- * (entry0 + USERD validation), so a wrong derivation costs a failed
- * probe, not a wrong pin.
- */
- if (ch->h_object == 0x31415900u && ch->notifier_pa) {
+ * SESSION 148 perf (r858/r859 evidence): a GR channel's ring page
+ * sits at (notifier_pa page + 0x400). Verified for the RC watchdog
+ * across r848/r853/r858; extended to all GR channels after r859
+ * showed the X channel (0x1000013) NEVER resolving its ring (no
+ * auto-pin all boot, entries decoded from garbage: va=0x41c000/
+ * 0x2017a20/0x10104 with lens 20464..49152, unreadable, skipped;
+ * ~11 s per frame). The candidate probe (entry0 in the channel's
+ * own alloc + USERD shape) content-gates every derivation, so a
+ * wrong guess costs a failed probe - exactly the current behaviour.
+ */
+ if (!ch->engine_type && ch->notifier_pa) {
u64 rpa = (ch->notifier_pa & ~(u64)(SEMA_PAGE_SIZE - 1)) +
0x400;