Skip to content

Commit 4693e85

Browse files
committed
drm/amdgpu: add S/G display parameter
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. v2: fix typo Reviewed-by: Harry Wentland <[email protected]> Acked-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent c6ac406 commit 4693e85

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ extern int amdgpu_num_kcq;
243243

244244
#define AMDGPU_VCNFW_LOG_SIZE (32 * 1024)
245245
extern int amdgpu_vcnfw_log;
246+
extern int amdgpu_sg_display;
246247

247248
#define AMDGPU_VM_MAX_NUM_CTX 4096
248249
#define AMDGPU_SG_THRESHOLD (256*1024*1024)

drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ int amdgpu_num_kcq = -1;
186186
int amdgpu_smartshift_bias;
187187
int amdgpu_use_xgmi_p2p = 1;
188188
int amdgpu_vcnfw_log;
189+
int amdgpu_sg_display = -1; /* auto */
189190

190191
static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work);
191192

@@ -931,6 +932,16 @@ module_param_named(num_kcq, amdgpu_num_kcq, int, 0444);
931932
MODULE_PARM_DESC(vcnfw_log, "Enable vcnfw log(0 = disable (default value), 1 = enable)");
932933
module_param_named(vcnfw_log, amdgpu_vcnfw_log, int, 0444);
933934

935+
/**
936+
* DOC: sg_display (int)
937+
* Disable S/G (scatter/gather) display (i.e., display from system memory).
938+
* This option is only relevant on APUs. Set this option to 0 to disable
939+
* S/G display if you experience flickering or other issues under memory
940+
* pressure and report the issue.
941+
*/
942+
MODULE_PARM_DESC(sg_display, "S/G Display (-1 = auto (default), 0 = disable)");
943+
module_param_named(sg_display, amdgpu_sg_display, int, 0444);
944+
934945
/**
935946
* DOC: smu_pptable_id (int)
936947
* Used to override pptable id. id = 0 use VBIOS pptable.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,6 +1523,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
15231523
}
15241524
break;
15251525
}
1526+
if (init_data.flags.gpu_vm_support &&
1527+
(amdgpu_sg_display == 0))
1528+
init_data.flags.gpu_vm_support = false;
15261529

15271530
if (init_data.flags.gpu_vm_support)
15281531
adev->mode_info.gpu_vm_support = true;

0 commit comments

Comments
 (0)