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

Timo Aaltonen tjaalton at ubuntu.com
Tue Jan 3 14:18:45 UTC 2023


Timo Aaltonen kirjoitti 3.1.2023 klo 13.28:
> Koba Ko kirjoitti 20.12.2022 klo 4.38:
>> 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.
> 
> git am is complaining though, so applying to oem-5.17 doesn't work.

Nevermind, I took the original commit and added the new quirks to the 
existing hpd_disconnect_quirk_table.

-- 
t




More information about the kernel-team mailing list