Skip to content

Commit f9c27e6

Browse files
committed
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
1 parent abbf310 commit f9c27e6

4 files changed

Lines changed: 15 additions & 49 deletions

File tree

drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus)
3131
if (dumpstate && __ratelimit(&rs)) {
3232
struct drm_printer p = drm_info_printer(mdp5_kms->dev->dev);
3333
drm_state_dump(mdp5_kms->dev, &p);
34-
if (mdp5_kms->smp)
35-
mdp5_smp_dump(mdp5_kms->smp, &p);
3634
}
3735
}
3836

drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,19 @@ static void mdp5_global_destroy_state(struct drm_private_obj *obj,
119119
kfree(mdp5_state);
120120
}
121121

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+
122131
static const struct drm_private_state_funcs mdp5_global_state_funcs = {
123132
.atomic_duplicate_state = mdp5_global_duplicate_state,
124133
.atomic_destroy_state = mdp5_global_destroy_state,
134+
.atomic_print_state = mdp5_global_print_state,
125135
};
126136

127137
static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
@@ -206,39 +216,6 @@ static void mdp5_kms_destroy(struct msm_kms *kms)
206216
mdp5_destroy(mdp5_kms);
207217
}
208218

209-
#ifdef CONFIG_DEBUG_FS
210-
static int smp_show(struct seq_file *m, void *arg)
211-
{
212-
struct drm_info_node *node = m->private;
213-
struct drm_device *dev = node->minor->dev;
214-
struct msm_drm_private *priv = dev->dev_private;
215-
struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
216-
struct drm_printer p = drm_seq_file_printer(m);
217-
218-
if (!mdp5_kms->smp) {
219-
drm_printf(&p, "no SMP pool\n");
220-
return 0;
221-
}
222-
223-
mdp5_smp_dump(mdp5_kms->smp, &p);
224-
225-
return 0;
226-
}
227-
228-
static struct drm_info_list mdp5_debugfs_list[] = {
229-
{"smp", smp_show },
230-
};
231-
232-
static int mdp5_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
233-
{
234-
drm_debugfs_create_files(mdp5_debugfs_list,
235-
ARRAY_SIZE(mdp5_debugfs_list),
236-
minor->debugfs_root, minor);
237-
238-
return 0;
239-
}
240-
#endif
241-
242219
static const struct mdp_kms_funcs kms_funcs = {
243220
.base = {
244221
.hw_init = mdp5_hw_init,
@@ -256,9 +233,6 @@ static const struct mdp_kms_funcs kms_funcs = {
256233
.complete_commit = mdp5_complete_commit,
257234
.get_format = mdp_get_format,
258235
.destroy = mdp5_kms_destroy,
259-
#ifdef CONFIG_DEBUG_FS
260-
.debugfs_init = mdp5_kms_debugfs_init,
261-
#endif
262236
},
263237
.set_irqmask = mdp5_set_irqmask,
264238
};

drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -325,22 +325,17 @@ void mdp5_smp_complete_commit(struct mdp5_smp *smp, struct mdp5_smp_state *state
325325
state->released = 0;
326326
}
327327

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)
329330
{
330331
struct mdp5_kms *mdp5_kms = get_kms(smp);
331332
struct mdp5_hw_pipe_state *hwpstate;
332333
struct mdp5_smp_state *state;
333-
struct mdp5_global_state *global_state;
334334
int total = 0, i, j;
335335

336336
drm_printf(p, "name\tinuse\tplane\n");
337337
drm_printf(p, "----\t-----\t-----\n");
338338

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-
344339
/* grab these *after* we hold the state_lock */
345340
hwpstate = &global_state->hwpipe;
346341
state = &global_state->smp;
@@ -365,9 +360,6 @@ void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p)
365360
drm_printf(p, "TOTAL:\t%d\t(of %d)\n", total, smp->blk_cnt);
366361
drm_printf(p, "AVAIL:\t%d\n", smp->blk_cnt -
367362
bitmap_weight(state->state, smp->blk_cnt));
368-
369-
if (drm_can_sleep())
370-
drm_modeset_unlock(&mdp5_kms->glob_state_lock);
371363
}
372364

373365

drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ struct mdp5_smp;
6969
struct mdp5_smp *mdp5_smp_init(struct mdp5_kms *mdp5_kms,
7070
const struct mdp5_smp_block *cfg);
7171

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);
7375

7476
uint32_t mdp5_smp_calculate(struct mdp5_smp *smp,
7577
const struct mdp_format *format,

0 commit comments

Comments
 (0)