[PATCH] drm/i915/dp: Fix I2C/EDID handling with active DisplayPort to DVI converter

David Flynn davidf at rd.bbc.co.uk
Thu Dec 9 10:31:14 PST 2010

* Chris Wilson (chris at chris-wilson.co.uk) wrote:
> On Wed, 8 Dec 2010 16:10:21 +0000, David Flynn <davidf at rd.bbc.co.uk> wrote:
> > This fixes broken EDID reading when using an active DisplayPort to
> > duallink DVI converter.  If the AUX CH replier chooses to defer the
> > transaction, a short read occurs and erroneous data is returned as
> > the i2c reply due to a lack of length checking and failure to check
> > for AUX ACK.
> And it didn't break my bog standard DP setup. :)
> Applied to -fixes and tagged for stable.

Excellent, thanks.  The above patch only attempted to fix the issue at
hand, and didn't resolve the possibility that the read is still short
although reported as OK.  This ought to either be handled or treated as
an error (iirc -- i don't have the standard in front of me right now) it
is valid for an i2c device to ack the address, but DP time out before
any data is returned.

Unfortunately i don't have a device to hand to test this (or even know
if it is a problem).

However, the not checking number of bytes read should be trivial to fix.
(treat as error, log a possible fixme) -- since a broken device could
trigger this.

I was slightly concerned that the edid parsing routines were able to
attempt to validate so much erroneous data -- on occasion even trying
to validate what looked like bits of /proc or even other processes.
(see commit message).  I don't enjoy the possibility of a broken
edid causing that.  Does anyone have any thoughts on this?

Kind regards,

R&D Engineer, BBC Research & Development, Tel: +44 (0)303 0409618
Centre House, 56-58 Wood Lane, LONDON, W12 7SB

More information about the dri-devel mailing list