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 11:28:21 UTC 2023


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.


-- 
t




More information about the kernel-team mailing list