NAK: [PATCH 3/4 V2][SRU][J/OEM-5.17] drm/amd/display: No display after resume from WB/CB
Tim Gardner
tim.gardner at canonical.com
Fri Dec 16 17:42:28 UTC 2022
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]
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list