On 7/19/25 10:25 AM, Mario Limonciello wrote:
On 7/18/25 9:12 PM, Lauri Tirkkonen wrote:
On Fri, Jul 18 2025 20:14:08 -0500, Mario Limonciello wrote:
OK, I think we need to do two things to figure out what's going on.
- Let's shift over to 6.16-rc6. Once we've got a handle on the
situation there we can iron out if there are other patches missing or this is also broken for you in 6.16. If it's not working as expected there either we need it fixed there first anyway.
Same behavior on 6.16-rc6: brightness is set to 0 (max 399000), minimally visible.
- The starting brightness I don't expect to be "0". We need to see
what values were read out from the firmware. There is a debugging message we can catch if you boot with drm.debug=0x106. Keep in mind you probably need to increase log_buf_len if your ring buffer is set too small too.
https://github.com/torvalds/linux/ commit/4b61b8a390511a1864f26cc42bab72881e93468d
PS: I would rather you add logs into a gist, pastebin or a bug somewhere if you can.
[ 3.210757] amdgpu 0000:03:00.0: [drm:amdgpu_dm_connector_late_register [amdgpu]] Backlight caps: min: 1000, max: 400000, ac 100, dc 32
full dmesg: https://termbin.com/o2q3
Thanks for sharing. Can you get me an updated output with drm.debug=0x106 set and with this applied? I want to see what values were set.
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 5df7f8c34231..cdc43cfb39dd 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -10489,8 +10489,12 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) /* restore the backlight level */ for (i = 0; i < dm->num_of_edps; i++) { if (dm->backlight_dev[i] && - (dm->actual_brightness[i] != dm->brightness[i])) + (dm->actual_brightness[i] != dm->brightness[i])) { + drm_WARN(adev_to_drm(adev), true, + "Backlight level %d does not match actual brightness %d for edp %d\n", + dm->brightness[i], dm-
actual_brightness[i], i);
amdgpu_dm_backlight_set_level(dm, i, dm-
brightness[i]);
+ } }
/*
Also, does turning off custom brightness curves (amdgpu.dcdebugmask=0x40000) help?
In advance of getting that updated log; I have a theory what's going on. I think the first value programmed to brightness happens as part of that very first modeset.
If that's what's going on, then I think doing an explicit programming cycle at the backlight registration will help. Here's a potential patch.
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index b19e7964060d..4b99efbaf481 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4996,6 +4996,8 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) dm->backlight_dev[aconnector->bl_idx] = NULL; } else drm_dbg_driver(drm, "DM: Registered Backlight device: %s\n", bl_name); + + amdgpu_dm_backlight_update_status(dm->backlight_dev[aconnector->bl_idx]); }
static int initialize_plane(struct amdgpu_display_manager *dm,