[PATCH] drm/radeon: Fix spurious unplug event on radeon HDMI

Alex Deucher alexdeucher at gmail.com
Mon Nov 18 15:37:58 UTC 2024


Applied.  Thanks!

Alex

On Sat, Nov 16, 2024 at 4:51 AM Steven 'Steve' Kendall
<skend at chromium.org> wrote:
>
> On several HP models (tested on HP 3125 and HP Probook 455 G2),
> spurious unplug events are emitted upon login on Chrome OS.
> This is likely due to the way Chrome OS restarts graphics
> upon login, so it's possible it's an issue on other
> distributions but not as common, though I haven't
> reproduced the issue elsewhere.
> Use logic from an earlier version of the merged change
> (see link below) which iterates over connectors and finds
> matching encoders, rather than the other way around.
> Also fixes an issue with screen mirroring on Chrome OS.
> I've deployed this patch on Fedora and did not observe
> any regression on these devices.
>
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1569#note_1603002
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3771
> Fixes: 20ea34710f7b ("drm/radeon: Add HD-audio component notifier support (v6)")
> Signed-off-by: Steven 'Steve' Kendall <skend at chromium.org>
> ---
>  drivers/gpu/drm/radeon/radeon_audio.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
> index 47aa06a9a942..5b69cc8011b4 100644
> --- a/drivers/gpu/drm/radeon/radeon_audio.c
> +++ b/drivers/gpu/drm/radeon/radeon_audio.c
> @@ -760,16 +760,20 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,
>         if (!rdev->audio.enabled || !rdev->mode_info.mode_config_initialized)
>                 return 0;
>
> -       list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) {
> +       list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
> +               const struct drm_connector_helper_funcs *connector_funcs =
> +                               connector->helper_private;
> +               encoder = connector_funcs->best_encoder(connector);
> +
> +               if (!encoder)
> +                       continue;
> +
>                 if (!radeon_encoder_is_digital(encoder))
>                         continue;
>                 radeon_encoder = to_radeon_encoder(encoder);
>                 dig = radeon_encoder->enc_priv;
>                 if (!dig->pin || dig->pin->id != port)
>                         continue;
> -               connector = radeon_get_connector_for_encoder(encoder);
> -               if (!connector)
> -                       continue;
>                 *enabled = true;
>                 ret = drm_eld_size(connector->eld);
>                 memcpy(buf, connector->eld, min(max_bytes, ret));
>
> ---
> base-commit: 2d5404caa8c7bb5c4e0435f94b28834ae5456623
> change-id: 20241115-hdmi-audio-radeon-connectors-f8ffac989b0d
>
> Best regards,
> --
> Steven 'Steve' Kendall <skend at chromium.org>
>


More information about the dri-devel mailing list