Messages in this thread | | | Date | Thu, 23 Feb 2012 17:30:41 +0100 | From | Stephan Bärwolf <> | Subject | responsiveness: newer kernels causing lagging and blocking |
| |
Under various conditions linux since 2.6.39-rc1 laggs and blocks enormously the whole system. (For example while starting "winecfg" (on a thinkpad X220) and parallel moving the mousecursor you can observe a periodic blocking for some seconds)
After bisecting a little while, commit "4819d2e4310796c4e9eef674499af9b9caf36b5a" (" drm: Retry i2c transfer of EDID block after failure ") seems to be responsible.
Because function "drm_do_probe_ddc_edid" loops trying "i2c_transfer" it consumes a lot of time during errors. Reverting or changing "retries" from 5 to 1 extremly minimizes the problem to "not perceptible". It seems the locking within "i2c_transfer" slows everything down. So maybe it is possible to yield() before calling it?
regards Stephan
| |