On 2/9/23 09:37, Christian König wrote: > 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@xxxxxxx> > > Acked-by: Christian König <christian.koenig@xxxxxxx> for the series. > Series is Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx> Harry >> --- >> 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; >