On 2025-07-23 11:57, Timur Kristóf wrote:
> Previously, DC determined the DRM connector type based on the
> signal type, which becomes problematic when a connector may
> support different signal types, such as DVI-I.
> 
> With this patch, it is now determined according to the actual
> connector type in DC, meaning it can now distinguish between
> DVI-D and DVI-I connectors.
> 
> A subsequent commit will enable polling for these connectors.
> 

Hi Timur,

this patch regresses the kms_bw IGT test with Navi 31 and 48
with a single 4k60 DP display connected. These subtests fail
when they should pass:

linear-tiling-2-displays-1920x1080p
linear-tiling-2-displays-2160x1440p
linear-tiling-2-displays-2560x1440p
linear-tiling-2-displays-3840x2160p
linear-tiling-3-displays-1920x1080p
linear-tiling-3-displays-2160x1440p
linear-tiling-3-displays-2560x1440p
linear-tiling-3-displays-3840x2160p
linear-tiling-4-displays-1920x1080p
linear-tiling-4-displays-2160x1440p
linear-tiling-4-displays-2560x1440p
linear-tiling-4-displays-3840x2160p

We confirmed with a revert of this patch.

Harry

> Signed-off-by: Timur Kristóf <timur.kris...@gmail.com>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 28 +++++++++++--------
>  1 file changed, 16 insertions(+), 12 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 096b23ad4845..c347b232ae06 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -8038,24 +8038,26 @@ static int dm_update_mst_vcpi_slots_for_dsc(struct 
> drm_atomic_state *state,
>       return 0;
>  }
>  
> -static int to_drm_connector_type(enum signal_type st)
> +static int to_drm_connector_type(uint32_t connector_id)
>  {
> -     switch (st) {
> -     case SIGNAL_TYPE_HDMI_TYPE_A:
> +     switch (connector_id) {
> +     case CONNECTOR_ID_HDMI_TYPE_A:
>               return DRM_MODE_CONNECTOR_HDMIA;
> -     case SIGNAL_TYPE_EDP:
> +     case CONNECTOR_ID_EDP:
>               return DRM_MODE_CONNECTOR_eDP;
> -     case SIGNAL_TYPE_LVDS:
> +     case CONNECTOR_ID_LVDS:
>               return DRM_MODE_CONNECTOR_LVDS;
> -     case SIGNAL_TYPE_RGB:
> +     case CONNECTOR_ID_VGA:
>               return DRM_MODE_CONNECTOR_VGA;
> -     case SIGNAL_TYPE_DISPLAY_PORT:
> -     case SIGNAL_TYPE_DISPLAY_PORT_MST:
> +     case CONNECTOR_ID_DISPLAY_PORT:
>               return DRM_MODE_CONNECTOR_DisplayPort;
> -     case SIGNAL_TYPE_DVI_DUAL_LINK:
> -     case SIGNAL_TYPE_DVI_SINGLE_LINK:
> +     case CONNECTOR_ID_SINGLE_LINK_DVID:
> +     case CONNECTOR_ID_DUAL_LINK_DVID:
>               return DRM_MODE_CONNECTOR_DVID;
> -     case SIGNAL_TYPE_VIRTUAL:
> +     case CONNECTOR_ID_SINGLE_LINK_DVII:
> +     case CONNECTOR_ID_DUAL_LINK_DVII:
> +             return DRM_MODE_CONNECTOR_DVII;
> +     case CONNECTOR_ID_VIRTUAL:
>               return DRM_MODE_CONNECTOR_VIRTUAL;
>  
>       default:
> @@ -8440,6 +8442,8 @@ void amdgpu_dm_connector_init_helper(struct 
> amdgpu_display_manager *dm,
>                       link->link_enc->features.dp_ycbcr420_supported ? true : 
> false;
>               break;
>       case DRM_MODE_CONNECTOR_DVID:
> +     case DRM_MODE_CONNECTOR_DVII:
> +     case DRM_MODE_CONNECTOR_VGA:
>               aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
>               break;
>       default:
> @@ -8631,7 +8635,7 @@ static int amdgpu_dm_connector_init(struct 
> amdgpu_display_manager *dm,
>               goto out_free;
>       }
>  
> -     connector_type = to_drm_connector_type(link->connector_signal);
> +     connector_type = to_drm_connector_type(link->link_id.id);
>  
>       res = drm_connector_init_with_ddc(
>                       dm->ddev,

Reply via email to