NAK: [PATCH 3/4 V2][SRU][J/OEM-5.17] drm/amd/display: No display after resume from WB/CB

Koba Ko koba.ko at canonical.com
Tue Dec 20 02:38:45 UTC 2022


On Sat, Dec 17, 2022 at 1:42 AM Tim Gardner <tim.gardner at canonical.com> wrote:
>
> On 12/15/22 6:42 PM, Koba Ko wrote:
> > From: Tsung-hua Lin <Tsung-hua.Lin at amd.com>
> >
> > BugLink: https://bugs.launchpad.net/bugs/1999836
> >
> > [why]
> > First MST sideband message returns AUX_RET_ERROR_HPD_DISCON
> > on certain intel platform. Aux transaction considered failure
> > if HPD unexpected pulled low. The actual aux transaction success
> > in such case, hence do not return error.
> >
> > [how]
> > Not returning error when AUX_RET_ERROR_HPD_DISCON detected
> > on the first sideband message.
> >
> > v2: squash in fix (Alex)
> >
> > Reviewed-by: Jerry Zuo <Jerry.Zuo at amd.com>
> > Acked-by: Brian Chang <Brian.Chang at amd.com>
> > Signed-off-by: Tsung-hua Lin <Tsung-hua.Lin at amd.com>
> > Tested-by: Daniel Wheeler <daniel.wheeler at amd.com>
> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > (backported from commit 503dc81c32b7138b55133ea2146a6b850155098d)
> > Signed-off-by: Koba Ko <koba.ko at canonical.com>
> > ---
> >   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 107 ++++++++++++------
> >   1 file changed, 72 insertions(+), 35 deletions(-)
> >
> > 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 023ab596c6ba7..12e348a3e4869 100644
> > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> > @@ -1280,41 +1280,6 @@ static void vblank_control_worker(struct work_struct *work)
> >
> >   #endif
> >
> > -static const struct dmi_system_id hpd_disconnect_quirk_table[] = {
> > -     {
> > -             .matches = {
> > -                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > -                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3660"),
> > -             },
> > -     },
> > -     {
> > -             .matches = {
> > -                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > -                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3260"),
> > -             },
> > -     },
> > -     {
> > -             .matches = {
> > -                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > -                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3460"),
> > -             },
> > -     },
> > -     {}
> > -};
> > -
> > -static void retrieve_dmi_info(struct amdgpu_display_manager *dm)
> > -{
> > -     const struct dmi_system_id *dmi_id;
> > -
> > -     dm->aux_hpd_discon_quirk = false;
> > -
> > -     dmi_id = dmi_first_match(hpd_disconnect_quirk_table);
> > -     if (dmi_id) {
> > -             dm->aux_hpd_discon_quirk = true;
> > -             DRM_INFO("aux_hpd_discon_quirk attached\n");
> > -     }
> > -}
> > -
> >   static void dm_handle_hpd_rx_offload_work(struct work_struct *work)
> >   {
> >       struct hpd_rx_irq_offload_work *offload_work;
> > @@ -1422,6 +1387,78 @@ static bool dm_should_disable_stutter(struct pci_dev *pdev)
> >       return false;
> >   }
> >
> > +static const struct dmi_system_id hpd_disconnect_quirk_table[] = {
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3660"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3260"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3460"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Tower Plus 7010"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Tower 7010"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex SFF Plus 7010"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex SFF 7010"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Micro Plus 7010"),
> > +             },
> > +     },
> > +     {
> > +             .matches = {
> > +                     DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Micro 7010"),
> > +             },
> > +     },
> > +     {}
> > +     /* TODO: refactor this from a fixed table to a dynamic option */
> > +};
> > +
> > +static void retrieve_dmi_info(struct amdgpu_display_manager *dm)
> > +{
> > +     const struct dmi_system_id *dmi_id;
> > +
> > +     dm->aux_hpd_discon_quirk = false;
> > +
> > +     dmi_id = dmi_first_match(hpd_disconnect_quirk_table);
> > +     if (dmi_id) {
> > +             dm->aux_hpd_discon_quirk = true;
> > +             DRM_INFO("aux_hpd_discon_quirk attached\n");
> > +     }
> > +}
> > +
> >   static int amdgpu_dm_init(struct amdgpu_device *adev)
> >   {
> >       struct dc_init_data init_data;
>
> As part of your backport you need to explain why the extra lines were
> deleted. Your patches is significantly different from the upstream
> patch. I usually add some lines under the 'backported from', e.g.,
>
> [Koba - removed some DMI tables and functions because they were no
> longer used]

the original entries are still in the hpd_disconnect_quirk_table.
because this hpd_disconnect_quirk_table and retrieve_dmi_info are
located before amdgpu_dm_init after 5.19/oem-6.0,
i moved these to here.

> --
> -----------
> Tim Gardner
> Canonical, Inc
>



More information about the kernel-team mailing list