Bug 106228

Summary: amdgpu reads back brightness 0 (which is not true) if checked before a brightness has been explicitly set
Product: DRI Reporter: jian-hong
Component: DRM/AMDgpuAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: dan, harry.wentland
Version: unspecified   
Hardware: Other   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
The full dmesg
none
Patch that should fix the problem
none
additional patch none

Description jian-hong 2018-04-25 03:43:32 UTC
Created attachment 139091 [details]
The full dmesg

I have tried to install Linux OS on ASUS laptop which is equipped with AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx.

When the Linux installation completed and entered to the OS, the brightness of display looks normal but the brightness bar is shown as the lowest level within the display's brightness GUI setting.

Also check "cat /sys/class/backlight/amdgpu_bl0/brightness" and it is 0.

After a system reboot, Brightness is dimmed to the lowest level.
Check "cat /sys/class/backlight/amdgpu_bl0/brightness" again and it is 12.

To make sure it is the problem that "system always reads back brightness 0 if checked before a brightness has been explicitly set".
I disable all of the brightness setting applications, including masking systemd-backlight service and than reboot.
"cat /sys/class/backlight/amdgpu_bl0/brightness" before set brightness manually again and it reads back 0, but the brightness of display looks normal actually.
Then, if I drag the brightness bar in GUI, the actual brightness changes and the "/sys/class/backlight/amdgpu_bl0/brightness" goes to the right value.
And, I reboot again, then the same things happen again.

I also tried this with kernel v4.17.0-rc2.  It still has the same problem.
Comment 1 Alex Deucher 2018-05-08 19:45:06 UTC
Harry, I thought we fixed something like this recently.  Maybe this patch?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c3d7bad88e3b35b981eecc1645ddbb3f13a8b54f
Comment 2 Harry Wentland 2018-05-08 21:06:02 UTC
That patch only affects Carrizo and should only be needed for S3.

We don't see this issue with Ubuntu 18.04 on a Raven laptop we have available. The OS (Gnome) shows brightness as expected on boot.

I wonder if some laptops behave differently but I can't think why.
Comment 3 Daniel Drake 2018-06-05 15:38:12 UTC
Do you have any specific debugging suggestions?
Can we ship an affected laptop to you for diagnosis?
Comment 4 David Francis 2018-07-23 18:32:30 UTC
Created attachment 140795 [details] [review]
Patch that should fix the problem

Could you try out this patch and check if it works?  Thanks.
Comment 5 Daniel Drake 2018-07-24 20:06:11 UTC
Created attachment 140809 [details] [review]
additional patch

this patch may also be required
Comment 6 jian-hong 2018-07-25 10:05:36 UTC
Apply "[PATCH] drm/amdgpu: Read back max backlight value at boot" to Linux 4.18.0-rc6 kernel.

I disable all of the brightness setting applications, including masking systemd-backlight service and than reboot.
"cat /sys/class/backlight/amdgpu_bl0/brightness" before set brightness manually again and it reads back 255 (the maximum brightness).

If I unmask systemd-backlight service and than reboot for test, "cat /sys/class/backlight/amdgpu_bl0/brightness" before set brightness manually again and it reads back the brightness which is saved before last reboot.
Comment 7 jian-hong 2018-07-25 10:07:42 UTC
Applied both "[PATCH] drm/amdgpu: Read back max backlight value at boot" and "[PATCH] drm/amd/display: Implement backlight_ops.get_brightness" to Linux 4.18.0-rc6 kernel.

I got the same behavior as previous comment.
Comment 8 David Francis 2018-07-25 19:26:47 UTC
When systemd-backlight is disabled, on reboot is the actual brightness coming from the monitor maximum?  

If it is, I believe this is working as intended.
Comment 9 jian-hong 2018-07-26 07:41:13 UTC
Hi David,

Yes!  It is. Thanks

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.