Gen3 chips have slightly different flip commands, and also contain a bit
that indicates whether a "flip pending" interrupt means the flip has
been queued or has been completed.
So implement support for the gen3 flip command, and make sure we use the
flip pending interrupt correctly depending on the value of ECOSKPD bit
0.
drm/i915: don't queue flips during a flip pending event
Hardware will set the flip pending ISR bit as soon as it receives the
flip instruction, and (supposedly) clear it once the flip completes
(e.g. at the next vblank). If we try to send down a flip instruction
while the ISR bit is set, the hardware can become very confused, and we
may never receive the corresponding flip pending interrupt, effectively
hanging the chip.
I think this is a i945 page-flipping bug which should have been fixed with 2010Q2 and this pair of patches from 2.6.35-rc5:
commit 1afe3e9d4335bf3 bc5615e37243dc8 fef65dac8f
Author: Jesse Barnes <email address hidden>
Date: Fri Mar 26 10:35:20 2010 -0700
drm/i915: gen3 page flipping fixes
Gen3 chips have slightly different flip commands, and also contain a bit
that indicates whether a "flip pending" interrupt means the flip has
been queued or has been completed.
So implement support for the gen3 flip command, and make sure we use the
flip pending interrupt correctly depending on the value of ECOSKPD bit
0.
Signed-off-by: Jesse Barnes <email address hidden>
Signed-off-by: Eric Anholt <email address hidden>
commit 83f7fd055eb3f1e 843803cd906179d 309553967b
Author: Jesse Barnes <email address hidden>
Date: Mon Apr 5 14:03:51 2010 -0700
drm/i915: don't queue flips during a flip pending event
Hardware will set the flip pending ISR bit as soon as it receives the
flip instruction, and (supposedly) clear it once the flip completes
(e.g. at the next vblank). If we try to send down a flip instruction
while the ISR bit is set, the hardware can become very confused, and we
may never receive the corresponding flip pending interrupt, effectively
hanging the chip.
Signed-off-by: Jesse Barnes <email address hidden>
Signed-off-by: Eric Anholt <email address hidden>