[PATCH 1/4] drm/amdgpu: add S/G display parameter

Christian König ckoenig.leichtzumerken at gmail.com
Thu Feb 9 14:37:02 UTC 2023


Am 09.02.23 um 15:11 schrieb Alex Deucher:
> Some users have reported flickerng with S/G display.  We've
> tried extensively to reproduce and debug the issue on a wide
> variety of platform configurations (DRAM bandwidth, etc.) and
> a variety of monitors, but so far have not been able to.  We
> disabled S/G display on a number of platforms to address this
> but that leads to failure to pin framebuffers errors and
> blank displays when there is memory pressure or no displays
> at all on systems with limited carveout (e.g., Chromebooks).
> Add a option to disable this as a debugging option as a
> way for users to disable this, depending on their use case,
> and for us to help debug this further.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

Acked-by: Christian König <christian.koenig at amd.com> for the series.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu.h               |  1 +
>   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c           | 11 +++++++++++
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  3 +++
>   3 files changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 64f9cc6fbbf0..187597024c1e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -242,6 +242,7 @@ extern int amdgpu_num_kcq;
>   
>   #define AMDGPU_VCNFW_LOG_SIZE (32 * 1024)
>   extern int amdgpu_vcnfw_log;
> +extern int amdgpu_sg_display;
>   
>   extern int amdgpu_force_sg_display;
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index fa3788bb6a2c..afa5c39c9c74 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -188,6 +188,7 @@ int amdgpu_num_kcq = -1;
>   int amdgpu_smartshift_bias;
>   int amdgpu_use_xgmi_p2p = 1;
>   int amdgpu_vcnfw_log;
> +int amdgpu_sg_display = -1; /* auto */
>   
>   static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work);
>   
> @@ -933,6 +934,16 @@ module_param_named(num_kcq, amdgpu_num_kcq, int, 0444);
>   MODULE_PARM_DESC(vcnfw_log, "Enable vcnfw log(0 = disable (default value), 1 = enable)");
>   module_param_named(vcnfw_log, amdgpu_vcnfw_log, int, 0444);
>   
> +/**
> + * DOC: sg_display (int)
> + * Disable S/G (scatter/gather) display (i.e., display from system memory).
> + * This option is only relevant on APUs.  Set this option to 0 to disable
> + * S/G display if you experience flickering or other issues under memory
> + * pressure and report the issue.
> + */
> +MODULE_PARM_DESC(sg_display, "S/G Display (-1 = auto (default), 0 = disable)");
> +module_param_named(sg_display, amdgpu_sg_display, int, 0444);
> +
>   /**
>    * DOC: smu_pptable_id (int)
>    * Used to override pptable id. id = 0 use VBIOS pptable.
> 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 bf06875e6a01..1babdfaa789a 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -1576,6 +1576,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
>   		}
>   		break;
>   	}
> +	if (init_data.flags.gpu_vm_support &&
> +	    (amdgpu_sg_display == 0))
> +		adev->mode_info.gpu_vm_support = false;
>   
>   	if (init_data.flags.gpu_vm_support)
>   		adev->mode_info.gpu_vm_support = true;



More information about the amd-gfx mailing list