[REGRESSION] drm/amd/display: backlight brightness set to 0 at amdgpu initialization
Lauri Tirkkonen
lauri at hacktheplanet.fi
Sun Jul 20 09:34:50 UTC 2025
On Sat, Jul 19 2025 12:39:45 -0500, Mario Limonciello wrote:
> 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.
> > > >
> > > > 1) 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.
> > >
> > > > 2) 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,
This patch was malformed, so I applied it manually. It didn't help
though - brightness still zero.
I came up with a patch that does help; will post in this thread shortly.
--
Lauri Tirkkonen | lotheac @ IRCnet
More information about the amd-gfx
mailing list