Thinkpad X61 with GM965 Arch Linux x86_64 kernel 2.6.35-zen1 (zen-stable.git 7b6fda4) xorg-server 1.8.1.902-1 xf86-video-intel current (git 8b04b35) libdrm current (git b04515c) When changing resolution or rotation using xrandr, backlight brightness is set to its minimum. Afterwards, xrandr --output LVDS1 --set BACKLIGHT does not work anymore. Regression introduced by commit 19c48d3 (display: outputs are enabled automatically by KMS). Reverting the commit makes it work again.
Working on the arrandale I have in front of me, I'll check my t61 later [when it's booting again...] Can you check the output of xrandr --prop after attempting to modify the Backlight to verify that the driver thinks it has modified the value?
Fails on my t61. xrandr reports that the backlight level is stuck at 0.
Created attachment 38059 [details] [review] Refactor backlight controls This works for my t61, I need to verify a few other architectures before submitting upstream.
*** Bug 29845 has been marked as a duplicate of this bug. ***
--prop reports backlight as 0. Changing the brightness via the function keys still works, and xrandr --prop reflects the change. Trying to set the backlight via --set BACKLIGHT does not change the value reported by --prop nor the actual brightness.
Now running: Thinkpad X61 with GM965 Arch Linux x86_64 kernel 2.6.36-rc4 + drm-intel-next contains a957355 (drm/i915: Refactor panel backlight controls) xorg-server 1.9.0-1 xf86-video-intel f63c7df6 Bug still happens.
This happens on my T500's GM45 as well, reverting 19c48d3b3f3 in xf86-video-intel corrects the issue. Unfortunately, the attached patch no longer applies cleanly to linux-2.6.
I also get this on my X200s; after it fails, "xrandr --output LVDS1 --set BACKLIGHT 15" does nothing, but I can still bring the backlight level back up with keyboard hotkeys, or by "echo 15 | sudo tee /sys/class/backlight/acpi_video0/brightness". (This is Debian bug <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=600405>, see there for version information. Note that xserver-xorg-video-intel "2.12.0+shadow" has a lot of stuff backported from git master.)
I met this issue on a GMA945 platform. after set to mode 800x600 via xrandr, I found that dpms_mode is set to OFF, that makes intel_output_backlight_set(val) be bypassed in intel_output_set_property(). So, I think we should see to (xrandr --mode 800x600), how it changes dpms_mode
Created attachment 39609 [details] [review] the patch to generate debug info log with this patch, here is the log file [ 14485.637] (--) ETPS/2 Elantech Touchpad: no supported touchpad found [ 14485.637] (EE) ETPS/2 Elantech Touchpad Unable to query/initialize Synaptics hardware. [ 14485.642] (EE) PreInit failed for input device "ETPS/2 Elantech Touchpad" [ 14485.642] (II) UnloadModule: "synaptics" [ 14485.674] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=0), mode(=0)) [ 14485.674] (II) intel(0): [xyl] leave intel_output_dpms_backlight [ 14522.283] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14522.283] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14522.283] (II) intel(0): Printing DDC gathered Modelines: [ 14522.284] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14522.284] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14522.284] (II) intel(0): [xyl] enter intel_output_set_property() [ 14522.284] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14522.287] (II) intel(0): [xyl] enter intel_output_get_property() [ 14522.287] (II) intel(0): [xyl] enter intel_output_backlight_get() [ 14522.288] (II) intel(0): [xyl] actual_brightless is 15 [ 14522.288] (II) intel(0): [xyl] leave intel_output_backlight_get() [ 14522.288] (II) intel(0): [xyl] enter intel_output_set_property() [ 14522.289] (II) intel(0): [xyl] dpms_mode(0) is ON [ 14522.289] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=15)) [ 14522.291] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=15)) [ 14522.292] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14522.292] (II) intel(0): [xyl] leave intel_output_get_property() [ 14522.293] (II) intel(0): [xyl] enter intel_output_set_property() [ 14522.293] (II) intel(0): [xyl] dpms_mode(0) is ON [ 14522.293] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=15)) [ 14522.296] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=15)) [ 14522.296] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14522.428] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14522.428] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14522.428] (II) intel(0): Printing DDC gathered Modelines: [ 14522.428] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14522.428] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14522.429] (II) intel(0): [xyl] enter intel_output_set_property() [ 14522.429] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14598.868] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14598.868] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14598.869] (II) intel(0): Printing DDC gathered Modelines: [ 14598.869] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14598.869] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14598.869] (II) intel(0): [xyl] enter intel_output_set_property() [ 14598.869] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14598.872] (II) intel(0): [xyl] enter intel_output_get_property() [ 14598.872] (II) intel(0): [xyl] enter intel_output_backlight_get() [ 14598.873] (II) intel(0): [xyl] actual_brightless is 15 [ 14598.873] (II) intel(0): [xyl] leave intel_output_backlight_get() [ 14598.873] (II) intel(0): [xyl] enter intel_output_set_property() [ 14598.873] (II) intel(0): [xyl] dpms_mode(0) is ON [ 14598.873] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=15)) [ 14598.876] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=15)) [ 14598.876] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14598.877] (II) intel(0): [xyl] leave intel_output_get_property() [ 14598.878] (II) intel(0): [xyl] enter intel_output_set_property() [ 14598.878] (II) intel(0): [xyl] dpms_mode(0) is ON [ 14598.878] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=14)) [ 14598.881] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=14)) [ 14598.881] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14599.013] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14599.013] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14599.013] (II) intel(0): Printing DDC gathered Modelines: [ 14599.014] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14599.014] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14599.014] (II) intel(0): [xyl] enter intel_output_set_property() [ 14599.014] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14629.073] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14629.073] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14629.074] (II) intel(0): Printing DDC gathered Modelines: [ 14629.074] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14629.074] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14629.074] (II) intel(0): [xyl] enter intel_output_set_property() [ 14629.074] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14629.077] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14629.077] (II) intel(0): [xyl] intel_output->backlight_iface == NULL and doesn't call intel_output_backlight_set() [ 14629.077] (II) intel(0): [xyl] leave intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14629.349] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=0), mode(=3)) [ 14629.349] (II) intel(0): [xyl] enter intel_output_backlight_get() [ 14629.350] (II) intel(0): [xyl] actual_brightless is 14 [ 14629.351] (II) intel(0): [xyl] leave intel_output_backlight_get() [ 14629.351] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=0)) [ 14629.354] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=0)) [ 14629.354] (II) intel(0): [xyl] leave intel_output_dpms_backlight [ 14629.355] (II) intel(0): Allocated new frame buffer 832x600 stride 4096, tiled [ 14629.757] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14629.758] (II) intel(0): [xyl] intel_output->backlight_iface == NULL and doesn't call intel_output_backlight_set() [ 14629.758] (II) intel(0): [xyl] leave intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14695.890] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14695.891] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14695.891] (II) intel(0): Printing DDC gathered Modelines: [ 14695.891] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14695.891] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14695.892] (II) intel(0): [xyl] enter intel_output_set_property() [ 14695.892] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14695.894] (II) intel(0): [xyl] enter intel_output_get_property() [ 14695.894] (II) intel(0): [xyl] enter intel_output_backlight_get() [ 14695.895] (II) intel(0): [xyl] actual_brightless is 0 [ 14695.895] (II) intel(0): [xyl] leave intel_output_backlight_get() [ 14695.896] (II) intel(0): [xyl] enter intel_output_set_property() [ 14695.896] (II) intel(0): [xyl] dpms_mode(3) is OFF [ 14695.896] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14695.896] (II) intel(0): [xyl] leave intel_output_get_property() [ 14695.896] (II) intel(0): [xyl] enter intel_output_set_property() [ 14695.897] (II) intel(0): [xyl] dpms_mode(3) is OFF [ 14695.897] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14696.029] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14696.029] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14696.029] (II) intel(0): Printing DDC gathered Modelines: [ 14696.029] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14696.029] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14696.029] (II) intel(0): [xyl] enter intel_output_set_property() [ 14696.030] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14723.230] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14723.231] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14723.231] (II) intel(0): Printing DDC gathered Modelines: [ 14723.231] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14723.231] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14723.231] (II) intel(0): [xyl] enter intel_output_set_property() [ 14723.231] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14723.235] (II) intel(0): Allocated new frame buffer 1024x600 stride 4096, tiled [ 14723.995] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14723.995] (II) intel(0): [xyl] intel_output->backlight_iface == NULL and doesn't call intel_output_backlight_set() [ 14723.995] (II) intel(0): [xyl] leave intel_output_dpms_backlight(oldmode(=3), mode(=3)) [ 14731.267] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14731.268] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14731.268] (II) intel(0): Printing DDC gathered Modelines: [ 14731.268] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14731.268] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14731.269] (II) intel(0): [xyl] enter intel_output_set_property() [ 14731.269] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14731.272] (II) intel(0): [xyl] enter intel_output_get_property() [ 14731.272] (II) intel(0): [xyl] enter intel_output_backlight_get() [ 14731.273] (II) intel(0): [xyl] actual_brightless is 0 [ 14731.273] (II) intel(0): [xyl] leave intel_output_backlight_get() [ 14731.273] (II) intel(0): [xyl] enter intel_output_set_property() [ 14731.273] (II) intel(0): [xyl] dpms_mode(3) is OFF [ 14731.273] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14731.273] (II) intel(0): [xyl] leave intel_output_get_property() [ 14731.274] (II) intel(0): [xyl] enter intel_output_set_property() [ 14731.274] (II) intel(0): [xyl] dpms_mode(3) is OFF [ 14731.274] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14731.405] (II) intel(0): EDID vendor "HSD", prod id 1001 [ 14731.405] (II) intel(0): DDCModeFromDetailedTiming: 1024x600 Warning: We only handle separate sync. [ 14731.406] (II) intel(0): Printing DDC gathered Modelines: [ 14731.406] (II) intel(0): Modeline "1024x600"x0.0 45.00 1024 1077 1112 1200 600 604 609 625 -hsync -vsync (37.5 kHz) [ 14731.406] (II) intel(0): Modeline "1024x600"x0.0 51.42 1024 1117 1152 1240 600 617 622 638 -hsync -vsync (41.5 kHz) [ 14731.406] (II) intel(0): [xyl] enter intel_output_set_property() [ 14731.406] (II) intel(0): [xyl] Leave intel_output_set_property() [ 14752.283] (II) Power Button: Close [ 14752.283] (II) UnloadModule: "evdev" [ 14752.290] (II) Video Bus: Close [ 14752.290] (II) UnloadModule: "evdev" [ 14752.297] (II) Power Button: Close [ 14752.297] (II) UnloadModule: "evdev" [ 14752.305] (II) Sleep Button: Close [ 14752.305] (II) UnloadModule: "evdev" [ 14752.312] (II) CNF7129: Close [ 14752.312] (II) UnloadModule: "evdev" [ 14752.321] (II) Asus EeePC extra buttons: Close [ 14752.321] (II) UnloadModule: "evdev" [ 14752.328] (II) AT Translated Set 2 keyboard: Close [ 14752.328] (II) UnloadModule: "evdev" [ 14752.341] (II) UnloadModule: "synaptics" [ 14752.342] (II) intel(0): [xyl] enter intel_output_dpms_backlight(oldmode(=3), mode(=0)) [ 14752.343] (II) intel(0): [xyl] enter intel_output_backlight_set(level(=14)) [ 14752.346] (II) intel(0): [xyl] leave intel_output_backlight_set(level(=14)) [ 14752.347] (II) intel(0): [xyl] leave intel_output_dpms_backlight
The issue alse was found on Pineview 32bit and Calpella 32bit, either with LVDS or eDP
Kernel: (drm-intel-fixes)6939a5aca7cfada279a24c307e772f33104fca20 Some additional commit info: Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 8 13:40:27 2010 +0100 drm/i915: Prevent module unload to avoid random memory corruption To use the commit with the patch, Pineview 32bit and Calpella 32bit still has the issue.
commit 9277bf4b4f94655eef177d0daffa90a47c51eb62 Merge: 8974935 49553c2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Sep 13 01:02:18 2010 +0100 Merge remote branch 'linus' into drm-intel-fixes To use the commit with the patch, my t61(965gm) still has the issue. BTW, which branch should be patch? I found only drm-intel-fixes branch can be patch. Is that alright?
(In reply to comment #13) > commit 9277bf4b4f94655eef177d0daffa90a47c51eb62 > Merge: 8974935 49553c2 > Author: Chris Wilson <chris@chris-wilson.co.uk> > Date: Mon Sep 13 01:02:18 2010 +0100 > > Merge remote branch 'linus' into drm-intel-fixes > > To use the commit with the patch, my t61(965gm) still has > the issue. > BTW, which branch should be patch? I found only drm-intel-fixes branch can be > patch. Is that alright? I don't think the fix works for general purpose. After mode changed in LVDS( I only test netbook), the DPMS mode set to OFF, so xrandr can't change the backlight any more. You can try as following xrandr --output LVDS1 --rotate left xrandr --output LVDS1 --set BACKLIGHT 12 then xrandr doesn't work.
find the regression and here is the fix (setdpms.patch), maybe ugly. diff --git a/src/intel_display.c b/src/intel_display.c index d32224e..4a159bf 100644 --- a/src/intel_display.c +++ b/src/intel_display.c @@ -339,6 +339,8 @@ intel_crtc_apply(xf86CrtcPtr crtc) if (output->crtc != crtc) continue; + /* Turn on any outputs on this crtc that may have been disabled */ + intel_output_dpms(output, DPMSModeOn); intel_output = output->driver_private; output_ids[output_count] = The regression is caused by this commit. In fact, KMS doesn't not handle backlight properly as we think. I don't know where to put the code, so I use above code in xf86-intel-driver to fix this issue. 19c48d3b3f33582baa87a9b3a9189e320e4cea45 is the first bad commit commit 19c48d3b3f33582baa87a9b3a9189e320e4cea45 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Aug 9 10:13:58 2010 +0100 display: outputs are enabled automatically by KMS When an output is attached to a crtc and that crtc is enabled, the output is automatically enabled so we can remove the redundant manual dpms on. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Created attachment 40154 [details] [review] set dpms on explictly
With the recent commit (Mark outputs as DPMSModeOn and restore backlight at mode set) this seems to have been fixed.
checked. The idea is same.
It works well on capella and pineview with current commit. But still has some problem on my gm965(t61). I have already file bug 32431 to track it.
Ok, this particular regression appears to have been resolved. \o/ Only Fang Xun's t61 to worry about....
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.