Linux I2C development
 help / color / mirror / Atom feed
From: Tobias Dyckerhoff <tobias.dyckerhoff@octaplex.net>
To: linux-input@vger.kernel.org
Cc: linux-i2c@vger.kernel.org, Jiri Kosina <jikos@kernel.org>,
	 Benjamin Tissoires <bentiss@kernel.org>
Subject: Re: i2c-hid: Synaptics 06CB:CD97 (Dell Latitude 7300) - touchpad failure modes: post-resume/mid-session IRQ storm, silent idle stall, coordinate jumps discarded by libinput; wedge captured at the raw-HID level (2026-11-10)
Date: Tue, 10 Nov 2026 18:19:49 +0100	[thread overview]
Message-ID: <avNR8dKtLhw7g5f4@ferret> (raw)
In-Reply-To: <avNI9_rElXTp48Mn@ferret>

All evidence referenced above (raw hid-recorder + evemu traces of both
wedge captures, environment and recurrence data) is attached to:

https://bugzilla.kernel.org/show_bug.cgi?id=222255

On Tue, Nov 10, 2026 at 05:43:22PM +0100, Tobias Dyckerhoff wrote:
> Hello,
> 
> recurring touchpad failures on a Dell Latitude 7300, Synaptics I2C-HID pad,
> HID v1.00:
> 
>     vendor 06cb product cd97  ("DELL08E0:00 06CB:CD97 Touchpad")
>     bus: i2c_designware.1, IRQ 17 (shared idma64.1 + i2c_designware.1)
>     Dell BIOS 1.43.0 (newest LVFS release; Dell's Synaptics touchpad
>         firmware utility does not list the Latitude 7300)
>     userspace: xf86-input-libinput, libinput 1.25 (Ubuntu noble)
> 
> The behaviour is identical on 6.8.0-147 (Ubuntu noble base),
> 7.0.0-42 (noble HWE) and 7.3.1 mainline (currently running, 6.5
> days up).  There is no 06CB:CD97 entry in any i2c-hid quirk table through
> v7.4-rc1 (RESET_ON_RESUME currently covers only the ALPS_JP
> any-product and SYNA2393 cases).  This is not a regression - it
> behaves the same on every kernel I have run on this machine.
> 
> 
> Three distinct failure modes
> 
> (1) IRQ storm.  IRQ17 fires at hundreds to thousands per second with
>     no usable input events.  First seen after a partially-failed
>     suspend + resume; later occurrences mid-session with no power
>     transition involved (measured via /proc/interrupts deltas:
>     ~480/s on one occasion, ~900/s, and ~3400/s on others).
>     Driver state looks healthy otherwise.  Recovery: unbind/bind of
>     i2c_hid_acpi (i.e. a HID RESET) restores the device within
>     seconds.  One occurrence was rebind-resistant (the rebind ran,
>     the pad re-probed, but the storm intensified); a full
>     suspend/resume cycle recovered that one.
> 
> (2) Silent idle stall.  After some minutes of idle, the pad stops
>     responding; IRQ17 goes completely silent while touching (zero
>     interrupts over seconds of finger contact) while the driver
>     still considers the device healthy (X-level props normal).  No
>     kernel log message at all.  Recovery: unbind/bind as above.
>     This matches in shape the 2026-04 report for 06CB:CE65
>     (Latitude 7420, unsolicited 0x0c sleep-notify report suspected;
>     I have no hidraw trace of my device doing the same - analog,
>     not confirmed for CD97).
> 
> (3) Coordinate-jump discard state.  IRQ17 fires at normal touch
>     report rates, the kernel delivers events, but libinput discards
>     every motion event:
> 
>       (EE) event5 - DELL08E0:00 06CB:CD97 Touchpad: kernel bug:
>       Touch jump detected and discarded.
> 
>     (84 occurrences in the current Xorg.0.log as of 2026-11-10, up
>     from 71 on Nov 8 and 31 the day before; libinput rate-limits the
>     message to 5/24h, but every user-space recovery re-opens the
>     evdev stream and re-arms the limit, so the true frequency is
>     higher).
> 
>     The pad is functionally dead.  Recovery:
>     `xinput disable <id>; xinput enable <id>` - i.e. merely
>     reopening the evdev stream - restores motion in ~1 s, no kernel
>     rebind needed.
> 
> Recurrence is multiple times per day. The local recovery log counts
> 53 user-side resets since the mitigation was installed on Nov 2
> (7/6/0/6/6/15/11/1/1 per day, Nov 2 through Nov 10), eight of them
> within one hour on Nov 8 - roughly one wedge every seven minutes.
> (Full log in the evidence bundle; a one-day follow-up snapshot with
> re-measured counters, evidence/03-persistence-20261108.txt, is part
> of the bundle; the Nov-10 episode below was captured end-to-end.)
> 
> 
> An odd baseline observation
> 
> On the current boot (6.5 days, mostly idle desk work) /proc/interrupts
> shows 97.2 million interrupts on IRQ17 - a sustained ~173/s average -
> while the sibling i2c_designware controllers sit at 0-2 interrupts
> each, and the pad works normally meanwhile.  An early re-measurement
> (89.2M at 4.9 days, then ~430/s over the previous 31 h) first read as
> an accelerating baseline; a further 39-hour follow-up on the same boot
> disproved that: the counter only rose to 97.2M, ~56/s across those 39
> hours despite one wedged episode inside them.  The background rate is
> episode-coupled: near zero while the pad sits untouched and healthy,
> and erupting during wedge states (captured at ~1.2 kHz wedged but
> idle, see below).  dmesg for this boot contains ZERO i2c-hid errors
> (no "incomplete report" lines at all) - including during the captured
> storm.  So even in its "working" state the device keeps the IRQ line
> far busier than its siblings do.
> 
> 
> Instrumented episode (2026-11-10; all traces in the bundle)
> 
> After an unremarkable s2idle suspend 09:24 -> resume 10:18 (no
> i2c-hid messages at all) the pad wedged again within ~20 minutes.
> Captured BEFORE recovery, twice, six minutes apart:
> 
>   * IRQ17 while touching the dead pad: 2421/s then 1598/s
>     (capture I), 3142/s then 3606/s (capture II); wedged but not
>     being touched it sustained ~1.2 kHz - that is roughly 20-30
>     interrupts per delivered report.
>   * hid-recorder on the wedged device ran flawlessly: the full
>     669-byte report descriptor plus 3,812 raw input reports (16 s
>     + 18 s captures).  Every single one is a standard 48-byte
>     ReportID 3 touch report: smooth coordinates (max step 57 of
>     1196 x-units = ~5 mm per 7.2 ms report), monotonic device
>     scan-time.  No truncated reports, no error reports, no
>     vendor report 0x0c.
>   * evemu-record shows the kernel delivering that same stream
>     (~80-140 reports/s) as perfectly normal MT events.
>   * Yet Xorg logged three fresh "Touch jump detected and
>     discarded" lines in those same minutes, and the cursor stayed
>     dead for the user throughout.
>   * Recovery was, once more, the evdev reopen alone (xinput
>     disable/enable).  Minutes later, idle, IRQ17 read literally
>     0 interrupts per 10 s.
> 
> So during this wedge the I2C transport, the HID layer and evdev all
> look healthy and quiet - zero kernel errors - while IRQ17 storms at
> ~25x the report rate and userspace discards every motion event.
> 
> 
> What works / what I could not fix
> 
>   * unbind/bind (HID RESET): reliable for (1) and (2), except the
>     one rebind-resistant case described above
>   * evdev reopen (xinput disable/enable): reliable instant fix for (3)
>   * BIOS 1.15.1 -> 1.43.0 upgrade: did not change anything
>   * no Dell touchpad firmware update exists for this device
> 
> 
> Questions
> 
>   1. Would an
>         { I2C_VENDOR_ID_SYNAPTICS, 0xCD97, I2C_HID_QUIRK_RESET_ON_RESUME }
>      entry be the right direction (cf. the Sep 2026 SYNA32A4 06CB:CE17
>      post-resume IRQ-storm discussion, where that quirk was proposed)?
>      The Nov-10 episode struck ~20 min after a clean resume, which
>      would fit that trigger.  I'm happy to build and test such a
>      patch for a week of real use.
>   2. The bundle now contains hid-recorder and evemu traces of a live
>      wedge (Nov 10, see above).  Is a deeper capture worth adding at
>      the next occurrence - i2cdump of the designware controller, an
>      i2c trace via ftrace, or something else?  Failures recur daily
>      here, so follow-ups are cheap.
>   3. The interrupts-per-report mismatch during a wedge (~25x, all
>      reports well-formed) - where would you want that looked at:
>      driver, controller, or firmware?  I can measure in whatever
>      form is useful (ftrace, i2c trace points, counters).
> 
> References to threads with the same signature family (other
> Synaptics 06CB devices):
> 
>   * Sep 2026, linux-input: "i2c-hid: IRQ storm from Synaptics
>     SYNA32A4 (06CB:CE17) after resume"
>   * Apr 2026, linux-i2c: 06CB:CE65 (Latitude 7420) - touchpad dies
>     after ~6 min idle, unsolicited report 0x0c suspected, driver
>     never answers, firmware locks up; rebind recovers
> 
> Evidence bundle (happy to send inline or as attachments, tell me
> what you prefer):
> 
>   environment       DMI, kernel config of the running 7.3.1, device
>                     stanzas, IRQ snapshot + counter math
>   recurrence        local reset log (53 resets over 9 days), plus a
>                     one-day persistence follow-up snapshot (IRQ17
>                     re-measured; episode-coupled, see above)
>   libinput-jumps   all "Touch jump" lines of the current boot
>   journal-samples   dmesg excerpts of the probe + one storm night
>   wedge-traces      the full Nov-10 instrumented episode: report
>                     descriptor + 3,812 raw reports + 2,812 evdev
>                     records + IRQ deltas + clean kernel logs
>                     (evidence/wedges/20261110-*/)
> 
> Best regards,
> Tobias
> 

      reply	other threads:[~2026-11-10 17:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-10 16:43 i2c-hid: Synaptics 06CB:CD97 (Dell Latitude 7300) - touchpad failure modes: post-resume/mid-session IRQ storm, silent idle stall, coordinate jumps discarded by libinput; wedge captured at the raw-HID level (2026-11-10) Tobias Dyckerhoff
2026-11-10 17:19 ` Tobias Dyckerhoff [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=avNR8dKtLhw7g5f4@ferret \
    --to=tobias.dyckerhoff@octaplex.net \
    --cc=bentiss@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox