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