I even tried this in ironlake_panel_vdd_work() before it locks mode_config.mutex:
if (mutex_is_locked(&dev->mode_config.mutex)) mutex_unlock(&dev->mode_config.mutex);
I know that's not atomic. But, in case of the bug it runs into the if-clause (so, the mutex is locked) and gives a warning about an unbalanced unlock. Then it moves on and ironlake_panel_vdd_work() gets stuck when trying to lock mode_config.mutex.
I've also tested various module parameters (and combinations of), i.e. disabling rc6, powersave, fbc (as Chris mentioned) ... to see if they cause any side effects.
For testing I've noticed that I don't need an X-server to trigger it. With those additional kernel messages I've sprinkled before, inside and when leaving a lock on mode_config.mutex I can see when it runs and get stuck in ironlake_panel_vdd_work(). For this I just need to boot without the monitor and plug it in when the system is up.
Is there anything else I can provide or should test to help you with this bug?
I even tried this in ironlake_ panel_vdd_ work() before it locks mode_config.mutex:
if (mutex_ is_locked( &dev->mode_ config. mutex))
mutex_ unlock( &dev->mode_ config. mutex);
I know that's not atomic. But, in case of the bug it runs into the if-clause (so, the mutex is locked) and gives a warning about an unbalanced unlock. Then it moves on and ironlake_ panel_vdd_ work() gets stuck when trying to lock mode_config.mutex.
I've also tested various module parameters (and combinations of), i.e. disabling rc6, powersave, fbc (as Chris mentioned) ... to see if they cause any side effects.
For testing I've noticed that I don't need an X-server to trigger it. With those additional kernel messages I've sprinkled before, inside and when leaving a lock on mode_config.mutex I can see when it runs and get stuck in ironlake_ panel_vdd_ work(). For this I just need to boot without the monitor and plug it in when the system is up.
Is there anything else I can provide or should test to help you with this bug?