This is very similar to earlier bug 47271, except an even later bios updated then broke it again. So this is the sequence of events:
* Old bios : old kernel == works
* bios upgrade (VBIOS 2132) : old kernel == broken
* kernel upgrade (backport f47166d2) == fixed
* bios upgrade == broken
* kernel upgrade (3.2 or later) == works
We would like help identify which kernel commit fixes the problem again so that we can backport to 3.0. The interesting thing is if we _revert_ f47166d2 in the 3.0-stable branch with the latest bios, it works again. There is also a lot of info in the ubuntu bug. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1041315
This is only a bug in the 3.0 stable series, introduced by commit f47166d2 in bug 47271.
Diff in the regdump:
< GEN6_INSTDONE_1: 0xfffffffe
> GEN6_INSTDONE_1: 0x00000000
< PIPEACONF: 0xc0000054 (enabled, active, 6bpc)
> PIPEACONF: 0xc0000050 (enabled, active, 6bpc)
< DSPASURF: 0x0096b000
> DSPASURF: 0x04830008
< PCH_PP_CONTROL: 0x00000003 (blacklight disabled, power down on re=
set, panel on)
> PCH_PP_CONTROL: 0xabcd0003 (blacklight disabled, power down on re=
set, panel on)
< RC6_RESIDENCY_TIME: 0x0001b916
< RC6p_RESIDENCY_TIME: 0x00000000
> RC6_RESIDENCY_TIME: 0x00331e26
> RC6p_RESIDENCY_TIME: 0xf5d8388f
An easy, albeit brutal way is to do a reverse bisect between 3.0 and 3.2: Mark every good commit as bad and every bad commit as good and git bisect will happily tell you which commit fixed a bug (git bisect isn't using a symmetric and so needs a few tricks to figure out where a bugfix instead of a regression is).
Looking at f47166d2 I don't have any idea what could a candidate for backporting to 3.0 from 3.2.
As I understand it, it's most likely also a problem in 3.2.15 and up which got the same commit (f47166d2b00) backported. It's yet unknown if 3.5/3.6 have fixed it, we'll test that next.
scratch that, the commit got pulled to the distro kernel for 12.04..
so it's confirmed that 3.2.15 is the first version that works fine. The commit needs something else in addition to it to fix the bug. Just needs to be found out what it is.
We've bisected it down to 3bcf603f6d5d18bd9d076dc280de71f48add4101 from 3.1 that fixes the bug. Sending it to stable next.