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/msm/mdp5: migrate SMP dumping to using atomic_print_state

The Shared Memory Pool (SMP) state is a part of the MDP5's private
object state. Use existing infrastructure, atomic_print_state()
callback, to dump SMP state (which also makes it included into
debugfs/dri/N/state). This allows us to drop the custom debugfs file
too.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/570179/
Link: https://lore.kernel.org/r/20231203000532.1290480-5-dmitry.baryshkov@linaro.org

+15 -49
-2
drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c
··· 31 31 if (dumpstate && __ratelimit(&rs)) { 32 32 struct drm_printer p = drm_info_printer(mdp5_kms->dev->dev); 33 33 drm_state_dump(mdp5_kms->dev, &p); 34 - if (mdp5_kms->smp) 35 - mdp5_smp_dump(mdp5_kms->smp, &p); 36 34 } 37 35 } 38 36
+10 -36
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
··· 119 119 kfree(mdp5_state); 120 120 } 121 121 122 + static void mdp5_global_print_state(struct drm_printer *p, 123 + const struct drm_private_state *state) 124 + { 125 + struct mdp5_global_state *mdp5_state = to_mdp5_global_state(state); 126 + 127 + if (mdp5_state->mdp5_kms->smp) 128 + mdp5_smp_dump(mdp5_state->mdp5_kms->smp, p, mdp5_state); 129 + } 130 + 122 131 static const struct drm_private_state_funcs mdp5_global_state_funcs = { 123 132 .atomic_duplicate_state = mdp5_global_duplicate_state, 124 133 .atomic_destroy_state = mdp5_global_destroy_state, 134 + .atomic_print_state = mdp5_global_print_state, 125 135 }; 126 136 127 137 static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms) ··· 216 206 mdp5_destroy(mdp5_kms); 217 207 } 218 208 219 - #ifdef CONFIG_DEBUG_FS 220 - static int smp_show(struct seq_file *m, void *arg) 221 - { 222 - struct drm_info_node *node = m->private; 223 - struct drm_device *dev = node->minor->dev; 224 - struct msm_drm_private *priv = dev->dev_private; 225 - struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms)); 226 - struct drm_printer p = drm_seq_file_printer(m); 227 - 228 - if (!mdp5_kms->smp) { 229 - drm_printf(&p, "no SMP pool\n"); 230 - return 0; 231 - } 232 - 233 - mdp5_smp_dump(mdp5_kms->smp, &p); 234 - 235 - return 0; 236 - } 237 - 238 - static struct drm_info_list mdp5_debugfs_list[] = { 239 - {"smp", smp_show }, 240 - }; 241 - 242 - static int mdp5_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor) 243 - { 244 - drm_debugfs_create_files(mdp5_debugfs_list, 245 - ARRAY_SIZE(mdp5_debugfs_list), 246 - minor->debugfs_root, minor); 247 - 248 - return 0; 249 - } 250 - #endif 251 - 252 209 static const struct mdp_kms_funcs kms_funcs = { 253 210 .base = { 254 211 .hw_init = mdp5_hw_init, ··· 233 256 .complete_commit = mdp5_complete_commit, 234 257 .get_format = mdp_get_format, 235 258 .destroy = mdp5_kms_destroy, 236 - #ifdef CONFIG_DEBUG_FS 237 - .debugfs_init = mdp5_kms_debugfs_init, 238 - #endif 239 259 }, 240 260 .set_irqmask = mdp5_set_irqmask, 241 261 };
+2 -10
drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c
··· 325 325 state->released = 0; 326 326 } 327 327 328 - void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p) 328 + void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p, 329 + struct mdp5_global_state *global_state) 329 330 { 330 331 struct mdp5_kms *mdp5_kms = get_kms(smp); 331 332 struct mdp5_hw_pipe_state *hwpstate; 332 333 struct mdp5_smp_state *state; 333 - struct mdp5_global_state *global_state; 334 334 int total = 0, i, j; 335 335 336 336 drm_printf(p, "name\tinuse\tplane\n"); 337 337 drm_printf(p, "----\t-----\t-----\n"); 338 - 339 - if (drm_can_sleep()) 340 - drm_modeset_lock(&mdp5_kms->glob_state_lock, NULL); 341 - 342 - global_state = mdp5_get_existing_global_state(mdp5_kms); 343 338 344 339 /* grab these *after* we hold the state_lock */ 345 340 hwpstate = &global_state->hwpipe; ··· 360 365 drm_printf(p, "TOTAL:\t%d\t(of %d)\n", total, smp->blk_cnt); 361 366 drm_printf(p, "AVAIL:\t%d\n", smp->blk_cnt - 362 367 bitmap_weight(state->state, smp->blk_cnt)); 363 - 364 - if (drm_can_sleep()) 365 - drm_modeset_unlock(&mdp5_kms->glob_state_lock); 366 368 } 367 369 368 370
+3 -1
drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h
··· 69 69 struct mdp5_smp *mdp5_smp_init(struct mdp5_kms *mdp5_kms, 70 70 const struct mdp5_smp_block *cfg); 71 71 72 - void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p); 72 + struct mdp5_global_state; 73 + void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p, 74 + struct mdp5_global_state *global_state); 73 75 74 76 uint32_t mdp5_smp_calculate(struct mdp5_smp *smp, 75 77 const struct mdp_format *format,