Bug 29716 - Regression: Backlight resets to minimum when changing resolution
Summary: Regression: Backlight resets to minimum when changing resolution
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: high major
Assignee: Chris Wilson
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
: 29845 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-08-20 15:45 UTC by Jan Alexander Steffens (heftig)
Modified: 2010-12-16 03:47 UTC (History)
6 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Refactor backlight controls (11.41 KB, patch)
2010-08-22 07:01 UTC, Chris Wilson
no flags Details | Splinter Review
the patch to generate debug info log (5.72 KB, patch)
2010-10-21 03:06 UTC, Liu Xinyun
no flags Details | Splinter Review
set dpms on explictly (917 bytes, patch)
2010-11-09 08:19 UTC, Liu Xinyun
no flags Details | Splinter Review

Description Jan Alexander Steffens (heftig) 2010-08-20 15:45:17 UTC
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.
Comment 1 Chris Wilson 2010-08-20 16:09:50 UTC
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?
Comment 2 Chris Wilson 2010-08-22 05:05:22 UTC
Fails on my t61. xrandr reports that the backlight level is stuck at 0.
Comment 3 Chris Wilson 2010-08-22 07:01:34 UTC
Created attachment 38059 [details] [review]
Refactor backlight controls

This works for my t61, I need to verify a few other architectures before submitting upstream.
Comment 4 Chris Wilson 2010-09-01 08:26:34 UTC
*** Bug 29845 has been marked as a duplicate of this bug. ***
Comment 5 Jan Alexander Steffens (heftig) 2010-09-02 07:58:20 UTC
--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.
Comment 6 Jan Alexander Steffens (heftig) 2010-09-18 04:57:12 UTC
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.
Comment 7 Nick Bowler 2010-10-03 10:10:02 UTC
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.
Comment 8 Simon McVittie 2010-10-17 04:15:29 UTC
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.)
Comment 9 Liu Xinyun 2010-10-21 02:49:28 UTC
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
Comment 10 Liu Xinyun 2010-10-21 03:06:35 UTC
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
Comment 11 wang,jinjin 2010-10-21 21:25:00 UTC
The issue alse was found on Pineview 32bit and Calpella 32bit, either with LVDS or eDP
Comment 12 wang,jinjin 2010-10-25 02:35:28 UTC
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.
Comment 13 wang,jinjin 2010-10-27 21:37:46 UTC
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?
Comment 14 Liu Xinyun 2010-11-09 08:16:02 UTC
(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.
Comment 15 Liu Xinyun 2010-11-09 08:18:34 UTC
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>
Comment 16 Liu Xinyun 2010-11-09 08:19:50 UTC
Created attachment 40154 [details] [review]
set dpms on explictly
Comment 17 Jan Alexander Steffens (heftig) 2010-11-17 07:59:12 UTC
With the recent commit (Mark outputs as DPMSModeOn and restore backlight at mode set) this seems to have been fixed.
Comment 18 Liu Xinyun 2010-11-17 08:17:49 UTC
checked. The idea is same.
Comment 19 fangxun 2010-12-16 00:37:57 UTC
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.
Comment 20 Chris Wilson 2010-12-16 03:47:31 UTC
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.