[Intel-gfx] [PATCH] Revert "drm/i915: Check live status before reading edid"

David Weinehall david.weinehall at linux.intel.com
Fri Aug 19 11:31:36 UTC 2016


On Thu, Aug 18, 2016 at 10:29:43AM +0300, David Weinehall wrote:
> On Wed, Aug 17, 2016 at 04:43:36PM +0300, Jani Nikula wrote:
> > On Wed, 17 Aug 2016, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > > On Wed, Aug 17, 2016 at 03:47:48PM +0300, David Weinehall wrote:
> > >> This reverts commit 237ed86c693d8a8e4db476976aeb30df4deac74b.
> > >> 
> > >> Our current implementation of live status check (repeat 9 times
> > >> with 10ms delays between each attempt as a workaround for
> > >> buggy displays) imposes a rather serious penalty, time wise,
> > >> on intel_hdmi_detect().  Since we we already skip live status
> > >> checks on platforms before gen 7, and since we seem to have
> > >> coped quite well before the live status check was introduced
> > >> for newer platforms too, the previous behaviour is probably
> > >> preferable, at least unless someone can point to a use-case
> > >> that the live status check improves (apart from "Bspec says so".
> > >> 
> > >> Signed-off-by: David Weinehall <david.weinehall at linux.intel.com>
> > >
> > > Fixes: 237ed86c693d ("drm/i915: Check live status before reading edid")
> > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97139
> > > Acked-by: Chris Wilson <chris at chris-wilson.co.uk>
> > > Cc: stable at vger.kernel.org
> > 
> > And we've come full circle on live status. Again.
> > 
> > References: https://upload.wikimedia.org/wikipedia/commons/3/3b/Paris_Tuileries_Garden_Facepalm_statue.jpg
> 
> Actually, we might have to take (at least) one more
> lap around the circle.
> 
> I did some more benchmarks, this time on Cherryview,
> and two different Skylake models (one ThinkPad 13,
> one NUC i5).
> 
> The results are rather frustrating:
> 
> On Skylake gmbus_wait_hw_status() seems to be
> really expensive[1].

[snip]

Actually, I think it's safe to do the revert.
A bit more testing yields that it's not a generic
issue for Skylake, it seems to be specific to
ThinkPads (or even a subset of them; I haven't
got more than one model to test on).

The gmbus never sends a NAK if there's nothing connected,
so eventually gmbus_wait_for_status() gives up and we fall
back to using the bitbanging method instead.

Since things still work (albeit with reduced performance)
on ThinkPads, and other platforms don't exhibit this
behaviour, I suggest we move forward and revert
the live status check.

Chris has a partial fix for the problem; it fixes
the first port (which is purely an HDMI-port), but
the second port -- which I believe is routed through
the dock connector and/or the type C USB-port,
still remains problematic.


Kind regards, David Weinehall


More information about the Intel-gfx mailing list