[PATCH] drm: Only warn about an invalid EDID block prior to rejection

Chris Wilson chris at chris-wilson.co.uk
Mon Mar 9 09:22:16 PDT 2015


On Mon, Mar 09, 2015 at 06:04:46PM +0200, Ville Syrjälä wrote:
> On Mon, Mar 09, 2015 at 03:39:01PM +0000, Chris Wilson wrote:
> > On Mon, Mar 09, 2015 at 05:29:44PM +0200, Ville Syrjälä wrote:
> > > On Mon, Mar 09, 2015 at 11:44:05AM +0000, Chris Wilson wrote:
> > > > On a noisy link, we may retry the EDID reads multiple times per block
> > > > and still succeed. In such cases, we don't want to flood the kernel logs
> > > > with *ERROR* messages as we then succeed. Refactor the EDID dumping and
> > > > push it into the caller rather than the validator so we can suppress the
> > > > warnings from transient failures. In the process, we want to refactor
> > > > drm_load_edid_firmware() to use the common drm_do_get_edid() to share
> > > > the same logic (since it already duplicates it).
> > > > 
> > > > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > > > References: https://bugs.freedesktop.org/show_bug.cgi?id=89454
> > > 
> > > Could we get it to dump the number of retries it had to make to get a
> > > valid EDID? The retries could be due to driver bugs so we may want to
> > > know that they in fact occured. Otherwise we might end up with eg.
> > > large delays during resume without any indication what caused them.
> > 
> > We also log the number of times the edid was bad and the edid was zero.
> 
> I don't see where we log those. We do count them though.
> 
> > Knowing how many times we retried would be nice as well. Seems like it
> > should be possible to output that to debugfs/.../connector/edid_info ?
> > 
> > What interface do you envisage being useful? I'm not convinced adding it
> > to the user dmesg would be useful, but can a debugfs be integrated into
> > whatever test you have in mind?
> 
> Well I just figure having it in the dmesg would be OK. That way when we
> get a bug titled 'Resume takes forever' we can just ask for the dmesg as
> usual, and we'd be able to see that something fishy was going on with
> the EDID reads.

Wouldn't we be better off with the timestamps on log functions calls
during resume. (I thought there was already an option to provide that.)
Alternatively, Daniel was looking at adding a big lart to anything
triggering an edid read. Similarly, we should be able to get better
information using ftrace. The counter argument is that they are all
substantially more difficult to setup than just asking the user to
enable drm.debug.

How about something like adding:
DRM_INFO("Reading EDID for connector->name took %s (%d extension blocks,
%d total blocks read)\n");
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the dri-devel mailing list