summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_display_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_display_engine.c')
-rw-r--r--kernel/gsp_display_engine.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/kernel/gsp_display_engine.c b/kernel/gsp_display_engine.c
index c522a93..bc37a5d 100644
--- a/kernel/gsp_display_engine.c
+++ b/kernel/gsp_display_engine.c
@@ -213,17 +213,25 @@ module_param_named(disp_events, gsp_disp_events, uint, 0644);
MODULE_PARM_DESC(disp_events, "Post the channel completion event on an armed UPDATE (default 1)");
/*
- * r1765: strict display-event delivery. Default 0 keeps the legacy
- * behaviour bit-for-bit (full A/B revert); when set, an armed UPDATE posts
- * only to the events registered on that channel (no all-events fallback),
- * and unrelated completions/the 0.5 s hint skip display-channel events
- * (see gsp_disp_engine_owns_object()). Live A/B: echo 1 >
- * /sys/module/vgsp/parameters/disp_events_strict.
+ * r1765: strict display-event delivery. An armed UPDATE posts only to the
+ * events registered on that channel (no all-events fallback), and unrelated
+ * completions/the 0.5 s hint skip display-channel events (see
+ * gsp_disp_engine_owns_object()). Default was 0 (legacy) through the r1771
+ * A/B; r1771 measured: assoc=1 alone -> flip WARNs + burst storms,
+ * assoc=1 + strict=1 -> 0 flip WARNs. r1780 receipts (eng5 c160): the
+ * legacy non-strict path fell through to the all-events shotgun for every
+ * UPDATE (NVKMS events register hSrc=0), the guest's status-queue read
+ * cursor fell 20-44 slots behind, and the flip event arrived after the
+ * 3 s NvDrm flip window -> "Flip event timeout on head 0". With the r1780
+ * ev_assoc default the exact match (h_object == alloc-parent of the NVKMS
+ * flip event) succeeds, so strict mode delivers 1:1; a miss returns
+ * -ENOENT and the pump's retry re-posts. Still runtime-writable for A/B:
+ * echo 0 > /sys/module/vgsp/parameters/disp_events_strict.
*/
-static unsigned gsp_disp_events_strict = 0;
+static unsigned gsp_disp_events_strict = 1;
module_param_named(disp_events_strict, gsp_disp_events_strict, uint, 0644);
MODULE_PARM_DESC(disp_events_strict,
- "Deliver a display UPDATE completion only to events registered on that channel, no all-events fallback (default 0 = legacy; 1 = r1765 strict)");
+ "Deliver a display UPDATE completion only to events registered on that channel, no all-events fallback (default 1 = r1780; 0 = legacy)");
static unsigned long long gsp_disp_notifier_pa;
module_param_named(disp_notifier_pa, gsp_disp_notifier_pa, ullong, 0644);