On Thu, Feb 16, 2012 at 11:44:46AM +0000, Daniel J Blueman wrote: > When charging Dell E5420 laptops, I see the Sandy Bridge South Display > Engine port C hotplug interrupt fire consistently at around 20Hz. Each > scan on the connectors results in ~100ms hold time for the mode_config > mutex which blocks eg the cursor set ioctl (due to the I2C read > timeouts across the connectors), resulting in terrible GUI > interactivity. We know about this locking issue - it's much worse on platforms where we need to do load-detect hotplug detection or if for whatever reasons it takes ages to grab the edid from your screen. The Great Plan (tm) is to add a per-crtc mutex so that cursor updates and pageflips can continue while someone else is holding the config_mutex to do background stuff like hotplug handling. Unfortunately there's tons of other important stuff on my todo :( > Notably, when only using battery or only using AC, the port C > interrupts don't fire. It feels like the platform is using South > Display Port C for GPIO/I2C; setting the port C pulse duration from > 2ms to 100ms doesn't change the behaviour. I'll dump off the GPIO > settings, but what else is good to debug this? Yep, dumping the register state (intel_reg_dumper from intel-gpu-tools is handy for that) in the different situations sounds useful. > Also, have you come across this kind of pattern before, eg a platform > using these GPIO ports for the something (in this case, feels like the > EC/battery)? Judging by the lack of a quirks, I'd say not. Perhaps > also I should dump off the SDE port C IIR mask register before we > reset it, in case the BIOS intentionally masks out port C hotplug > events. If this is indeed the bios we need to quirk this away. But I think we should check first whether we don't butcher something else accidently. -Daniel -- Daniel Vetter Mail: daniel at ffwll.ch Mobile: +41 (0)79 365 57 48