From 2c4400914f0e68126b9bc62612c3cd91ebf163de Mon Sep 17 00:00:00 2001
From: David Rice
Date: Tue, 26 May 2026 17:33:37 +0200
Subject: [PATCH] Commit
---
flicker_investigation_continued.html | 53 +++++++++++++++++++++++-----
1 file changed, 45 insertions(+), 8 deletions(-)
diff --git a/flicker_investigation_continued.html b/flicker_investigation_continued.html
index e56dc19..3a1d73a 100644
--- a/flicker_investigation_continued.html
+++ b/flicker_investigation_continued.html
@@ -252,16 +252,53 @@ transient that completes within one poll interval. Specifically:
hardware-level events that do not change any register I am polling
(e.g. a brief PHY FIFO timing slip with no associated interrupt)
are also outside what this instrumentation can detect.
- Why I did not poll faster. The DSIM register reads
- go through the memtool userspace tool via subprocess
- calls, which has non-trivial overhead. Pushing the wide poll much
- below ~100 ms started loading the device CPU and impacting the I²C
- poll loop. I did not try to optimise this further.
+ Why I did not push the wide poll faster. The
+ memtool subprocess calls have non-trivial overhead and
+ pushing the wide poll much below ~100 ms started loading the device CPU
+ and impacting the I²C poll loop.
-So the correct way to read section 4 is: at the resolutions I could poll,
-nothing showed up. That is consistent with — but not proof of — the fault
-being below register visibility (e.g. a sub-frame transient timing event).
+Follow-up trial: high-rate /dev/mem mmap poll
+
+To try to see below the 500 ms ceiling I added a second poller that
+bypasses memtool by mmap-ing /dev/mem directly in
+Python and reading the DSIM registers via load instructions, aiming for
+~1 ms resolution. A short captured window showed:
+
+
+ DSIM_CLKCTRL (offset 0x008) is active at sub-
+ millisecond timescales — it flips from its steady-state value of
+ 0x02 to 0x10, 0x100 or
+ 0x01 in 1–2 ms wide pulses, occurring roughly every
+ 200 ms during normal operation.
+ - The pulses appear at a very regular cadence and are not visibly
+ aligned with the video switches I was driving. The pattern looks
+ consistent with routine per-frame clock-enable management by the
+ kernel driver rather than fault-correlated events — but I am
+ not claiming to have shown that, only that the activity I
+ saw was regular.
+ - The mmap poll at that rate destabilised the device — the full unit
+ (not just the userspace service) crashed/rebooted within seconds of
+ starting, on multiple attempts at 1 ms target rate. I therefore could
+ not run it long enough to mark visible flicker events and compare
+ timestamps against the CLKCTRL transitions.
+
+
+So the most accurate position on register-level diagnostics for this
+investigation is:
+
+
+ - At the resolutions I could safely sustain (500 ms wide poll, 10 ms PLL
+ poll), nothing showed up during a confirmed flicker burst.
+ - At higher rate (1 ms) the registers are demonstrably busy, but the
+ activity I captured looks like normal driver behaviour, and I could
+ not keep the device alive long enough to test correlation with
+ flicker timing.
+ - The combined evidence is consistent with — but not proof of — the
+ fault being below register-level visibility on this rig, e.g. a
+ sub-frame transient timing event that does not change any register
+ I am able to read safely.
+
5. Reproducer without GStreamer or video