On 7/7/2023 4:12 PM, Dmitry Baryshkov wrote:
Use devm_kzalloc to create MDP TOP structure. This allows us to remove
corresponding kfree and drop dpu_hw_mdp_destroy() function.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c | 17 +++++++----------
  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h |  8 +++++---
  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c    |  5 ++---
  3 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
index cff48763ce25..481b373d9ccb 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
@@ -2,6 +2,8 @@
  /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
   */
+#include <drm/drm_managed.h>
+
  #include "dpu_hwio.h"
  #include "dpu_hw_catalog.h"
  #include "dpu_hw_top.h"
@@ -268,16 +270,17 @@ static void _setup_mdp_ops(struct dpu_hw_mdp_ops *ops,
                ops->intf_audio_select = dpu_hw_intf_audio_select;
  }
-struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg,
-               void __iomem *addr,
-               const struct dpu_mdss_cfg *m)
+struct dpu_hw_mdp *dpu_hw_mdptop_init(struct drm_device *dev,
+                                     const struct dpu_mdp_cfg *cfg,
+                                     void __iomem *addr,
+                                     const struct dpu_mdss_cfg *m)
  {
        struct dpu_hw_mdp *mdp;
if (!addr)
                return ERR_PTR(-EINVAL);
- mdp = kzalloc(sizeof(*mdp), GFP_KERNEL);
+       mdp = drmm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL);
        if (!mdp)
                return ERR_PTR(-ENOMEM);
@@ -292,9 +295,3 @@ struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg, return mdp;
  }
-
-void dpu_hw_mdp_destroy(struct dpu_hw_mdp *mdp)
-{
-       kfree(mdp);
-}
-
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
index 8b1463d2b2f0..6f3dc98087df 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
@@ -145,13 +145,15 @@ struct dpu_hw_mdp {
/**
   * dpu_hw_mdptop_init - initializes the top driver for the passed config
+ * @dev:  Corresponding device for devres management
   * @cfg:  MDP TOP configuration from catalog
   * @addr: Mapped register io address of MDP
   * @m:    Pointer to mdss catalog data
   */
-struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg,
-               void __iomem *addr,
-               const struct dpu_mdss_cfg *m);
+struct dpu_hw_mdp *dpu_hw_mdptop_init(struct drm_device *dev,
+                                     const struct dpu_mdp_cfg *cfg,
+                                     void __iomem *addr,
+                                     const struct dpu_mdss_cfg *m);
void dpu_hw_mdp_destroy(struct dpu_hw_mdp *mdp); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index f7723f89cbbc..48c3f8b6b88f 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -822,8 +822,6 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
dpu_kms->catalog = NULL; - if (dpu_kms->hw_mdp)
-               dpu_hw_mdp_destroy(dpu_kms->hw_mdp);

Hi Dmitry,

This section is causing a merge conflict for me. Seems that your working branch is missing a section of code [1]:

```
...

if (dpu_kms->vbif[VBIF_NRT])
                devm_iounmap(&dpu_kms->pdev->dev, dpu_kms->vbif[VBIF_NRT]);
        dpu_kms->vbif[VBIF_NRT] = NULL;

        if (dpu_kms->vbif[VBIF_RT])
                devm_iounmap(&dpu_kms->pdev->dev, dpu_kms->vbif[VBIF_RT]);
        dpu_kms->vbif[VBIF_RT] = NULL;
...

```

Unfortunately, I'm unable to find which series removed it. Can you list the relevant series as a dependency?

Thanks,

Jessica Zhang

[1] https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c#L812

        dpu_kms->hw_mdp = NULL;
  }
@@ -1051,7 +1049,8 @@ static int dpu_kms_hw_init(struct msm_kms *kms) dpu_kms->rm_init = true; - dpu_kms->hw_mdp = dpu_hw_mdptop_init(dpu_kms->catalog->mdp,
+       dpu_kms->hw_mdp = dpu_hw_mdptop_init(dev,
+                                            dpu_kms->catalog->mdp,
                                             dpu_kms->mmio,
                                             dpu_kms->catalog);
        if (IS_ERR(dpu_kms->hw_mdp)) {
--
2.39.2

Reply via email to