Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
* [PATCH RESEND 0/5] drm/msm: cleanup private obj handling
@ 2023-12-03  0:05 Dmitry Baryshkov
  2023-12-03  0:05 ` [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump Dmitry Baryshkov
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

Note: I'm resending this patch series as I haven't got any feedback from
the drm core maintainers to the first patch.

While debugging one of the features in DRM/MSM I noticed that MSM
subdrivers still wrap private object access with manual modeset locking.
Since commit b962a12050a3 ("drm/atomic: integrate modeset lock with
private objects") this is no longer required, as the DRM framework
handles private objects internally. Drop these custom locks, while also
cleaning up the surrounding code.

Dmitry Baryshkov (5):
  drm/atomic: add private obj state to state dump
  drm/msm/dpu: finalise global state object
  drm/msm/dpu: drop global_state_lock
  drm/msm/mdp5: migrate SMP dumping to using atomic_print_state
  drm/msm/mdp5: drop global_state_lock

 drivers/gpu/drm/drm_atomic.c             |  9 ++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 14 +++---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h  |  1 -
 drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c |  2 -
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 54 +++++-------------------
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h |  1 -
 drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c | 12 +-----
 drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h |  4 +-
 8 files changed, 31 insertions(+), 66 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
@ 2023-12-03  0:05 ` Dmitry Baryshkov
  2023-12-04  8:49   ` Maxime Ripard
  2023-12-03  0:05 ` [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object Dmitry Baryshkov
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

The drm_atomic_print_new_state() already prints private object state via
drm_atomic_private_obj_print_state(). Add private object state dumping
to __drm_state_dump(), so that it is also included into drm_state_dump()
output and into debugfs/dri/N/state file.

Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/drm_atomic.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index f1a503aafe5a..c31fc0b48c31 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1773,6 +1773,7 @@ static void __drm_state_dump(struct drm_device *dev, struct drm_printer *p,
 	struct drm_crtc *crtc;
 	struct drm_connector *connector;
 	struct drm_connector_list_iter conn_iter;
+	struct drm_private_obj *obj;
 
 	if (!drm_drv_uses_atomic_modeset(dev))
 		return;
@@ -1801,6 +1802,14 @@ static void __drm_state_dump(struct drm_device *dev, struct drm_printer *p,
 	if (take_locks)
 		drm_modeset_unlock(&dev->mode_config.connection_mutex);
 	drm_connector_list_iter_end(&conn_iter);
+
+	list_for_each_entry(obj, &config->privobj_list, head) {
+		if (take_locks)
+			drm_modeset_lock(&obj->lock, NULL);
+		drm_atomic_private_obj_print_state(p, obj->state);
+		if (take_locks)
+			drm_modeset_unlock(&obj->lock);
+	}
 }
 
 /**
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
  2023-12-03  0:05 ` [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump Dmitry Baryshkov
@ 2023-12-03  0:05 ` Dmitry Baryshkov
  2024-02-09 19:57   ` Abhinav Kumar
  2023-12-03  0:05 ` [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock Dmitry Baryshkov
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

Add calls to finalise global state object and corresponding lock.

Fixes: de3916c70a24 ("drm/msm/dpu: Track resources in global state")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index fe7267b3bff5..73f70e67cfef 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -385,6 +385,12 @@ static int dpu_kms_global_obj_init(struct dpu_kms *dpu_kms)
 	return 0;
 }
 
+static void dpu_kms_global_obj_fini(struct dpu_kms *dpu_kms)
+{
+	drm_atomic_private_obj_fini(&dpu_kms->global_state);
+	drm_modeset_lock_fini(&dpu_kms->global_state_lock);
+}
+
 static int dpu_kms_parse_data_bus_icc_path(struct dpu_kms *dpu_kms)
 {
 	struct icc_path *path0;
@@ -826,6 +832,8 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
 		dpu_rm_destroy(&dpu_kms->rm);
 	dpu_kms->rm_init = false;
 
+	dpu_kms_global_obj_fini(dpu_kms);
+
 	dpu_kms->catalog = NULL;
 
 	if (dpu_kms->hw_mdp)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
  2023-12-03  0:05 ` [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump Dmitry Baryshkov
  2023-12-03  0:05 ` [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object Dmitry Baryshkov
@ 2023-12-03  0:05 ` Dmitry Baryshkov
  2024-02-09 22:28   ` Abhinav Kumar
  2023-12-03  0:05 ` [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state Dmitry Baryshkov
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

Since the commit b962a12050a3 ("drm/atomic: integrate modeset lock with
private objects") the DRM framework no longer requires the external
lock for private objects. Drop the lock, letting the DRM to manage
private object locking.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 --------
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 1 -
 2 files changed, 9 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 73f70e67cfef..26ac00f8f486 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -328,11 +328,6 @@ struct dpu_global_state *dpu_kms_get_global_state(struct drm_atomic_state *s)
 	struct msm_drm_private *priv = s->dev->dev_private;
 	struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
 	struct drm_private_state *priv_state;
-	int ret;
-
-	ret = drm_modeset_lock(&dpu_kms->global_state_lock, s->acquire_ctx);
-	if (ret)
-		return ERR_PTR(ret);
 
 	priv_state = drm_atomic_get_private_obj_state(s,
 						&dpu_kms->global_state);
@@ -373,8 +368,6 @@ static int dpu_kms_global_obj_init(struct dpu_kms *dpu_kms)
 {
 	struct dpu_global_state *state;
 
-	drm_modeset_lock_init(&dpu_kms->global_state_lock);
-
 	state = kzalloc(sizeof(*state), GFP_KERNEL);
 	if (!state)
 		return -ENOMEM;
@@ -388,7 +381,6 @@ static int dpu_kms_global_obj_init(struct dpu_kms *dpu_kms)
 static void dpu_kms_global_obj_fini(struct dpu_kms *dpu_kms)
 {
 	drm_atomic_private_obj_fini(&dpu_kms->global_state);
-	drm_modeset_lock_fini(&dpu_kms->global_state_lock);
 }
 
 static int dpu_kms_parse_data_bus_icc_path(struct dpu_kms *dpu_kms)
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index b6f53ca6e962..ed549f0f7c65 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -84,7 +84,6 @@ struct dpu_kms {
 	 * Global private object state, Do not access directly, use
 	 * dpu_kms_global_get_state()
 	 */
-	struct drm_modeset_lock global_state_lock;
 	struct drm_private_obj global_state;
 
 	struct dpu_rm rm;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
                   ` (2 preceding siblings ...)
  2023-12-03  0:05 ` [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock Dmitry Baryshkov
@ 2023-12-03  0:05 ` Dmitry Baryshkov
  2024-02-09 22:34   ` Abhinav Kumar
  2023-12-03  0:05 ` [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock Dmitry Baryshkov
  2024-02-19 12:30 ` [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
  5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

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>
---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c |  2 --
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 46 ++++++------------------
 drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c | 12 ++-----
 drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h |  4 ++-
 4 files changed, 15 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c
index 43443a435d59..b40ed3a847c8 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c
@@ -31,8 +31,6 @@ static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus)
 	if (dumpstate && __ratelimit(&rs)) {
 		struct drm_printer p = drm_info_printer(mdp5_kms->dev->dev);
 		drm_state_dump(mdp5_kms->dev, &p);
-		if (mdp5_kms->smp)
-			mdp5_smp_dump(mdp5_kms->smp, &p);
 	}
 }
 
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index ec933d597e20..cd46c2b0ec0c 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -119,9 +119,19 @@ static void mdp5_global_destroy_state(struct drm_private_obj *obj,
 	kfree(mdp5_state);
 }
 
+static void mdp5_global_print_state(struct drm_printer *p,
+				    const struct drm_private_state *state)
+{
+	struct mdp5_global_state *mdp5_state = to_mdp5_global_state(state);
+
+	if (mdp5_state->mdp5_kms->smp)
+		mdp5_smp_dump(mdp5_state->mdp5_kms->smp, p, mdp5_state);
+}
+
 static const struct drm_private_state_funcs mdp5_global_state_funcs = {
 	.atomic_duplicate_state = mdp5_global_duplicate_state,
 	.atomic_destroy_state = mdp5_global_destroy_state,
+	.atomic_print_state = mdp5_global_print_state,
 };
 
 static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
@@ -226,39 +236,6 @@ static void mdp5_kms_destroy(struct msm_kms *kms)
 	mdp5_destroy(mdp5_kms);
 }
 
-#ifdef CONFIG_DEBUG_FS
-static int smp_show(struct seq_file *m, void *arg)
-{
-	struct drm_info_node *node = m->private;
-	struct drm_device *dev = node->minor->dev;
-	struct msm_drm_private *priv = dev->dev_private;
-	struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
-	struct drm_printer p = drm_seq_file_printer(m);
-
-	if (!mdp5_kms->smp) {
-		drm_printf(&p, "no SMP pool\n");
-		return 0;
-	}
-
-	mdp5_smp_dump(mdp5_kms->smp, &p);
-
-	return 0;
-}
-
-static struct drm_info_list mdp5_debugfs_list[] = {
-		{"smp", smp_show },
-};
-
-static int mdp5_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
-{
-	drm_debugfs_create_files(mdp5_debugfs_list,
-				 ARRAY_SIZE(mdp5_debugfs_list),
-				 minor->debugfs_root, minor);
-
-	return 0;
-}
-#endif
-
 static const struct mdp_kms_funcs kms_funcs = {
 	.base = {
 		.hw_init         = mdp5_hw_init,
@@ -277,9 +254,6 @@ static const struct mdp_kms_funcs kms_funcs = {
 		.get_format      = mdp_get_format,
 		.set_split_display = mdp5_set_split_display,
 		.destroy         = mdp5_kms_destroy,
-#ifdef CONFIG_DEBUG_FS
-		.debugfs_init    = mdp5_kms_debugfs_init,
-#endif
 	},
 	.set_irqmask         = mdp5_set_irqmask,
 };
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c
index b68682c1b5bc..ab5e3ba5aa2f 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c
@@ -325,22 +325,17 @@ void mdp5_smp_complete_commit(struct mdp5_smp *smp, struct mdp5_smp_state *state
 	state->released = 0;
 }
 
-void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p)
+void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p,
+		   struct mdp5_global_state *global_state)
 {
 	struct mdp5_kms *mdp5_kms = get_kms(smp);
 	struct mdp5_hw_pipe_state *hwpstate;
 	struct mdp5_smp_state *state;
-	struct mdp5_global_state *global_state;
 	int total = 0, i, j;
 
 	drm_printf(p, "name\tinuse\tplane\n");
 	drm_printf(p, "----\t-----\t-----\n");
 
-	if (drm_can_sleep())
-		drm_modeset_lock(&mdp5_kms->glob_state_lock, NULL);
-
-	global_state = mdp5_get_existing_global_state(mdp5_kms);
-
 	/* grab these *after* we hold the state_lock */
 	hwpstate = &global_state->hwpipe;
 	state = &global_state->smp;
@@ -365,9 +360,6 @@ void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p)
 	drm_printf(p, "TOTAL:\t%d\t(of %d)\n", total, smp->blk_cnt);
 	drm_printf(p, "AVAIL:\t%d\n", smp->blk_cnt -
 			bitmap_weight(state->state, smp->blk_cnt));
-
-	if (drm_can_sleep())
-		drm_modeset_unlock(&mdp5_kms->glob_state_lock);
 }
 
 void mdp5_smp_destroy(struct mdp5_smp *smp)
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h
index ba5618e136c3..7a24c887760b 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h
@@ -70,7 +70,9 @@ struct mdp5_smp *mdp5_smp_init(struct mdp5_kms *mdp5_kms,
 		const struct mdp5_smp_block *cfg);
 void  mdp5_smp_destroy(struct mdp5_smp *smp);
 
-void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p);
+struct mdp5_global_state;
+void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p,
+		   struct mdp5_global_state *global_state);
 
 uint32_t mdp5_smp_calculate(struct mdp5_smp *smp,
 		const struct mdp_format *format,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
                   ` (3 preceding siblings ...)
  2023-12-03  0:05 ` [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state Dmitry Baryshkov
@ 2023-12-03  0:05 ` Dmitry Baryshkov
  2024-02-09 23:01   ` Abhinav Kumar
  2024-02-19 12:30 ` [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
  5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2023-12-03  0:05 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm

Since the commit b962a12050a3 ("drm/atomic: integrate modeset lock with
private objects") the DRM framework no longer requires the external
lock for private objects. Drop the lock, letting the DRM to manage
private object locking.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 8 --------
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h | 1 -
 2 files changed, 9 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index cd46c2b0ec0c..b1d2f00974d5 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -84,11 +84,6 @@ struct mdp5_global_state *mdp5_get_global_state(struct drm_atomic_state *s)
 	struct msm_drm_private *priv = s->dev->dev_private;
 	struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
 	struct drm_private_state *priv_state;
-	int ret;
-
-	ret = drm_modeset_lock(&mdp5_kms->glob_state_lock, s->acquire_ctx);
-	if (ret)
-		return ERR_PTR(ret);
 
 	priv_state = drm_atomic_get_private_obj_state(s, &mdp5_kms->glob_state);
 	if (IS_ERR(priv_state))
@@ -138,8 +133,6 @@ static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
 {
 	struct mdp5_global_state *state;
 
-	drm_modeset_lock_init(&mdp5_kms->glob_state_lock);
-
 	state = kzalloc(sizeof(*state), GFP_KERNEL);
 	if (!state)
 		return -ENOMEM;
@@ -613,7 +606,6 @@ static void mdp5_destroy(struct mdp5_kms *mdp5_kms)
 		pm_runtime_disable(&mdp5_kms->pdev->dev);
 
 	drm_atomic_private_obj_fini(&mdp5_kms->glob_state);
-	drm_modeset_lock_fini(&mdp5_kms->glob_state_lock);
 }
 
 static int construct_pipes(struct mdp5_kms *mdp5_kms, int cnt,
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h
index 29bf11f08601..70fdc0b6c7c5 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h
@@ -40,7 +40,6 @@ struct mdp5_kms {
 	 * Global private object state, Do not access directly, use
 	 * mdp5_global_get_state()
 	 */
-	struct drm_modeset_lock glob_state_lock;
 	struct drm_private_obj glob_state;
 
 	struct mdp5_smp *smp;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump
  2023-12-03  0:05 ` [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump Dmitry Baryshkov
@ 2023-12-04  8:49   ` Maxime Ripard
  0 siblings, 0 replies; 12+ messages in thread
From: Maxime Ripard @ 2023-12-04  8:49 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: dri-devel, freedreno, linux-arm-msm, Abhinav Kumar, Daniel Vetter,
	David Airlie, Maarten Lankhorst, Maxime Ripard, Rob Clark,
	Thomas Zimmermann

On Sun, 3 Dec 2023 03:05:28 +0300, Dmitry Baryshkov wrote:
> The drm_atomic_print_new_state() already prints private object state via
> drm_atomic_private_obj_print_state(). Add private object state dumping
> to __drm_state_dump(), so that it is also included into drm_state_dump()
> output and into debugfs/dri/N/state file.
> 
> 
> [ ... ]

Acked-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object
  2023-12-03  0:05 ` [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object Dmitry Baryshkov
@ 2024-02-09 19:57   ` Abhinav Kumar
  0 siblings, 0 replies; 12+ messages in thread
From: Abhinav Kumar @ 2024-02-09 19:57 UTC (permalink / raw)
  To: Dmitry Baryshkov, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: Rob Clark, dri-devel, freedreno, linux-arm-msm



On 12/2/2023 4:05 PM, Dmitry Baryshkov wrote:
> Add calls to finalise global state object and corresponding lock.
> 
> Fixes: de3916c70a24 ("drm/msm/dpu: Track resources in global state")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock
  2023-12-03  0:05 ` [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock Dmitry Baryshkov
@ 2024-02-09 22:28   ` Abhinav Kumar
  0 siblings, 0 replies; 12+ messages in thread
From: Abhinav Kumar @ 2024-02-09 22:28 UTC (permalink / raw)
  To: Dmitry Baryshkov, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: Rob Clark, dri-devel, freedreno, linux-arm-msm



On 12/2/2023 4:05 PM, Dmitry Baryshkov wrote:
> Since the commit b962a12050a3 ("drm/atomic: integrate modeset lock with
> private objects") the DRM framework no longer requires the external
> lock for private objects. Drop the lock, letting the DRM to manage
> private object locking.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 --------
>   drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 1 -
>   2 files changed, 9 deletions(-)
> 


Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state
  2023-12-03  0:05 ` [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state Dmitry Baryshkov
@ 2024-02-09 22:34   ` Abhinav Kumar
  0 siblings, 0 replies; 12+ messages in thread
From: Abhinav Kumar @ 2024-02-09 22:34 UTC (permalink / raw)
  To: Dmitry Baryshkov, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: Rob Clark, dri-devel, freedreno, linux-arm-msm



On 12/2/2023 4:05 PM, Dmitry Baryshkov wrote:
> 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>
> ---
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c |  2 --
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 46 ++++++------------------
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c | 12 ++-----
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.h |  4 ++-
>   4 files changed, 15 insertions(+), 49 deletions(-)
> 

Nice cleanup !

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock
  2023-12-03  0:05 ` [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock Dmitry Baryshkov
@ 2024-02-09 23:01   ` Abhinav Kumar
  0 siblings, 0 replies; 12+ messages in thread
From: Abhinav Kumar @ 2024-02-09 23:01 UTC (permalink / raw)
  To: Dmitry Baryshkov, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: Rob Clark, dri-devel, freedreno, linux-arm-msm



On 12/2/2023 4:05 PM, Dmitry Baryshkov wrote:
> Since the commit b962a12050a3 ("drm/atomic: integrate modeset lock with
> private objects") the DRM framework no longer requires the external
> lock for private objects. Drop the lock, letting the DRM to manage
> private object locking.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 8 --------
>   drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h | 1 -
>   2 files changed, 9 deletions(-)
> 

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH RESEND 0/5] drm/msm: cleanup private obj handling
  2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
                   ` (4 preceding siblings ...)
  2023-12-03  0:05 ` [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock Dmitry Baryshkov
@ 2024-02-19 12:30 ` Dmitry Baryshkov
  5 siblings, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2024-02-19 12:30 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter, Dmitry Baryshkov
  Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm


On Sun, 03 Dec 2023 03:05:27 +0300, Dmitry Baryshkov wrote:
> Note: I'm resending this patch series as I haven't got any feedback from
> the drm core maintainers to the first patch.
> 
> While debugging one of the features in DRM/MSM I noticed that MSM
> subdrivers still wrap private object access with manual modeset locking.
> Since commit b962a12050a3 ("drm/atomic: integrate modeset lock with
> private objects") this is no longer required, as the DRM framework
> handles private objects internally. Drop these custom locks, while also
> cleaning up the surrounding code.
> 
> [...]

Applied, thanks!

[2/5] drm/msm/dpu: finalise global state object
      https://gitlab.freedesktop.org/lumag/msm/-/commit/49e27d3c9cd6
[3/5] drm/msm/dpu: drop global_state_lock
      https://gitlab.freedesktop.org/lumag/msm/-/commit/abbf3108bc63
[4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state
      https://gitlab.freedesktop.org/lumag/msm/-/commit/f9c27e649a0d
[5/5] drm/msm/mdp5: drop global_state_lock
      https://gitlab.freedesktop.org/lumag/msm/-/commit/ffa0c87f172b

Best regards,
-- 
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-02-19 12:30 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-03  0:05 [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov
2023-12-03  0:05 ` [PATCH RESEND 1/5] drm/atomic: add private obj state to state dump Dmitry Baryshkov
2023-12-04  8:49   ` Maxime Ripard
2023-12-03  0:05 ` [PATCH RESEND 2/5] drm/msm/dpu: finalise global state object Dmitry Baryshkov
2024-02-09 19:57   ` Abhinav Kumar
2023-12-03  0:05 ` [PATCH RESEND 3/5] drm/msm/dpu: drop global_state_lock Dmitry Baryshkov
2024-02-09 22:28   ` Abhinav Kumar
2023-12-03  0:05 ` [PATCH RESEND 4/5] drm/msm/mdp5: migrate SMP dumping to using atomic_print_state Dmitry Baryshkov
2024-02-09 22:34   ` Abhinav Kumar
2023-12-03  0:05 ` [PATCH RESEND 5/5] drm/msm/mdp5: drop global_state_lock Dmitry Baryshkov
2024-02-09 23:01   ` Abhinav Kumar
2024-02-19 12:30 ` [PATCH RESEND 0/5] drm/msm: cleanup private obj handling Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox