* [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* 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
* [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* 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
* [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* 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
* [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* 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
* [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 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