public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* v3.9-rc1 instability on Chromebook Pixel with gmbus irq
@ 2013-03-06  2:35 Benson Leung
  2013-03-06  8:14 ` Daniel Vetter
  0 siblings, 1 reply; 4+ messages in thread
From: Benson Leung @ 2013-03-06  2:35 UTC (permalink / raw)
  To: daniel.vetter
  Cc: Daniel Kurtz, Yufeng Shen, Olof Johansson, dri-devel,
	linux-kernel@vger.kernel.org

Hi Daniel Vetter,

I'm working on touch devices Chromium OS, and I've noticed a
regression between 3.8 and 3.9-rc1, which was posted yesterday.

The hardware in question is a Chromebook Pixel. For this device, we
have i2c input devices: atmel mxt224s touchpad and atmel mxt1664s
touchscreen. The touchpad is on bus 1, "i915 gmbus vga" at 1-004b. The
touchscreen is on bus 2, "i915 gmbus panel" at 2-004a.

I was testing v3.9-rc1 on the Pixel and the touchscreen driver is
being returned -110 (-ETIMEDOUT) on an i2c_transfer after several
seconds of both touch devices working correctly. At the time of the
failure, there are no error messages from GMBUS that I can see, but
the bus never recovers. I can keep interacting with the touchscreen or
touchpad, and the interrupts trigger reads, but all subsequent reads
return -110.

I noticed that between 3.8 and 3.9-rc1, your patch series to add gmbus
irq support was merged. After bisecting, I found that this commit
seems to be causing the timeout problem. Reverting it makes the
problem go away, and the bus is stable.

commit 2c438c0273b76d6cb158f8bdd0aa3ebf66e48a28
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sat Dec 1 13:53:46 2012 +0100

    drm/i915: use gmbus irq to wait for gmbus idle

    GMBUS_ACTIVE has inverted sense and so doesn't fit into the
    wait_hw_status helper, hence create a new gmbus_wait_idle functions.
    Also, we only care about the idle irq event and nothing else, which
    allows us to use the wait_event_timeout helper directly without
    jumping through hoops to catch NAKs.

    Since gen2/3 don't have gmbus interrupts, handle them separately with
    the old wait_for macro.

    This shaves another few ms off reading EDID from a hdmi screen on my
    testbox here. EDID reading with interrupt driven gmbus is now as fast
    as with busy-looping gmbus at 28 ms here (with negligible cpu
    overhead).

    Reviewed-by: Imre Deak <imre.deak@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>


Is there anything I can do to help debug this some more?

--
Benson Leung
Software Engineer, Chrom* OS
bleung@chromium.org

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-03-06 19:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-06  2:35 v3.9-rc1 instability on Chromebook Pixel with gmbus irq Benson Leung
2013-03-06  8:14 ` Daniel Vetter
2013-03-06  8:37   ` Jani Nikula
2013-03-06 19:22   ` Benson Leung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox