https://bugs.freedesktop.org/show_bug.cgi?id=29787
--- Comment #18 from Ville Syrjala syrjala@sci.fi 2011-05-21 04:31:35 PDT --- (In reply to comment #15)
(In reply to comment #14)
Grumble. So, how will this be fixed? Sprinkle the code with preempt_disable()/enable() pairs? Advise all users (well, me) to disable preemption? Change the code so it no longer acts on intermittent EDID failures? Ask your colleagues to design sane hardware that doesn't rely on software interaction for timing-critical operations ;) ?
FWIW, I'm perfectly happy to disable preemption in my kernel, haven't run a distro-provided kernel since 2.6.27. But your explanation sounds like this could bite a lot more users than just me.
It has nothing to do with the hw, it's the nature of i2c. All drivers that use bit banging i2c (hwmon, v4l, lots of embedded stuff) would potentially be affected.
If the EEPROM supports clock stretching I see no reason why bit banging would fail.
I got these timeout errors on one system at some point. I had an idea for a possible fix, but I never got around to testing it. I'll attach the patch.