Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/display: Add Replay residency in debugfs

[Why]
Users can access the replay residency to get PHY off percentage

[How]
Start capture residency:
sudo echo 1 /sys/kernel/debug/dri/0/eDP-1/replay_residency

Stop and Get replay residency:
sudo cat /sys/kernel/debug/dri/0/eDP-1/replay_residency

Reviewed-by: ChiaHsuan (Tom) Chung <chiahsuan.chung@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Ray Wu and committed by
Alex Deucher
640cd296 e3419e1e

+33 -1
+33 -1
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
··· 3107 3107 } 3108 3108 3109 3109 /* 3110 + * Start / Stop capture Replay residency 3111 + */ 3112 + static int replay_set_residency(void *data, u64 val) 3113 + { 3114 + struct amdgpu_dm_connector *connector = data; 3115 + struct dc_link *link = connector->dc_link; 3116 + bool is_start = (val != 0); 3117 + u32 residency = 0; 3118 + 3119 + link->dc->link_srv->edp_replay_residency(link, &residency, is_start, PR_RESIDENCY_MODE_PHY); 3120 + return 0; 3121 + } 3122 + 3123 + /* 3124 + * Read Replay residency 3125 + */ 3126 + static int replay_get_residency(void *data, u64 *val) 3127 + { 3128 + struct amdgpu_dm_connector *connector = data; 3129 + struct dc_link *link = connector->dc_link; 3130 + u32 residency = 0; 3131 + 3132 + link->dc->link_srv->edp_replay_residency(link, &residency, false, PR_RESIDENCY_MODE_PHY); 3133 + *val = (u64)residency; 3134 + 3135 + return 0; 3136 + } 3137 + 3138 + /* 3110 3139 * Read PSR state 3111 3140 */ 3112 3141 static int psr_get(void *data, u64 *val) ··· 3354 3325 dmcub_trace_event_state_set, "%llu\n"); 3355 3326 3356 3327 DEFINE_DEBUGFS_ATTRIBUTE(replay_state_fops, replay_get_state, NULL, "%llu\n"); 3357 - 3328 + DEFINE_DEBUGFS_ATTRIBUTE(replay_residency_fops, replay_get_residency, replay_set_residency, 3329 + "%llu\n"); 3358 3330 DEFINE_DEBUGFS_ATTRIBUTE(psr_fops, psr_get, NULL, "%llu\n"); 3359 3331 DEFINE_DEBUGFS_ATTRIBUTE(psr_residency_fops, psr_read_residency, NULL, 3360 3332 "%llu\n"); ··· 3533 3503 debugfs_create_file("replay_capability", 0444, dir, connector, 3534 3504 &replay_capability_fops); 3535 3505 debugfs_create_file("replay_state", 0444, dir, connector, &replay_state_fops); 3506 + debugfs_create_file_unsafe("replay_residency", 0444, dir, 3507 + connector, &replay_residency_fops); 3536 3508 debugfs_create_file_unsafe("psr_capability", 0444, dir, connector, &psr_capability_fops); 3537 3509 debugfs_create_file_unsafe("psr_state", 0444, dir, connector, &psr_fops); 3538 3510 debugfs_create_file_unsafe("psr_residency", 0444, dir,