Bug 44505 - complete hang when dpms is off and a program set the gamma (gnome-screensaver does both) i865g at least
Summary: complete hang when dpms is off and a program set the gamma (gnome-screensaver...
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: Other All
: medium major
Assignee: Chris Wilson
QA Contact:
Depends on:
Blocks: 42991 44622
  Show dependency treegraph
Reported: 2012-01-05 12:42 UTC by Alban Browaeys
Modified: 2017-07-24 23:03 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:

check crtc active and not only enable before setting lut (986 bytes, text/plain)
2012-01-05 12:42 UTC, Alban Browaeys
no flags Details

Description Alban Browaeys 2012-01-05 12:42:16 UTC
Created attachment 55189 [details]
check crtc active and not only enable before setting lut

"xset dpms force off"  then "xgamma -rgamma 2.0" brings the box down .

graphics: gen2 i865g with or without sna (2.17 and 2.16).
kernel: debian 3.0.0-1 to 3.2-rc7 (at a point before kernel were not affected).

I discoverd the issue as gnome-screensaver 3 set the dpms off while fading off thus ends up setting the gamma after dpms is off. Which hang the box (no keyboard, no network, no disk activity only a blue led and fan noise).

Attached patch fixes this issue by checking the intel_crtc->active in intel_crtc_load_lut instead of only checking for crtc->enable. (printk shows that enable is on while active is off when this dpms off mode 3 was sent to the kernel)
Comment 1 Chris Wilson 2012-01-05 12:50:18 UTC
Checking active only is probably the right approach here. I just need to explain why enabled is wrong...
Comment 2 Chris Wilson 2012-03-02 04:10:50 UTC
In linus/master, and should hit the stable trees:

commit aed3f09db39596e539f90b11a5016aea4d8442e1
Author: Alban Browaeys <prahal@yahoo.com>
Date:   Fri Feb 24 17:12:45 2012 +0000

    drm/i915: Prevent a machine hang by checking crtc->active before loading lut
    Before loading the lut (gamma), check the active state of intel_crtc,
    otherwise at least on gen2 hang ensue.
    This is reproducible in Xorg via:
      xset dpms force off
      xgamma -rgamma 2.0 # freeze.
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44505
    Signed-off-by: Alban Browaeys <prahal@yahoo.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
    Cc: stable@kernel.org
    Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.