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