Message ID | dade9fce82e4905f3d61494785f81604674df5da.1599166024.git.robin.murphy@arm.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | drm/exynos: Drop local dma_parms | expand |
Hi Robin, On 03.09.2020 22:51, Robin Murphy wrote: > Since commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms > for platform devices"), struct platform_device already provides a > dma_parms structure, so we can save allocating another one. > > Also the DMA segment size is simply a size, not a bitmask. > > Signed-off-by: Robin Murphy <robin.murphy@arm.com> I've sent a similar patch over 2 months ago, but it looks it got lost: https://lore.kernel.org/dri-devel/20200707110827.3760-1-m.szyprowski@samsung.com/ Inki, could You queue it for merge? > --- > drivers/gpu/drm/exynos/exynos_drm_dma.c | 26 +------------------------ > 1 file changed, 1 insertion(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dma.c b/drivers/gpu/drm/exynos/exynos_drm_dma.c > index 58b89ec11b0e..9f25a5ebbf7d 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dma.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dma.c > @@ -31,23 +31,6 @@ > #define EXYNOS_DEV_ADDR_START 0x20000000 > #define EXYNOS_DEV_ADDR_SIZE 0x40000000 > > -static inline int configure_dma_max_seg_size(struct device *dev) > -{ > - if (!dev->dma_parms) > - dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL); > - if (!dev->dma_parms) > - return -ENOMEM; > - > - dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); > - return 0; > -} > - > -static inline void clear_dma_max_seg_size(struct device *dev) > -{ > - kfree(dev->dma_parms); > - dev->dma_parms = NULL; > -} > - > /* > * drm_iommu_attach_device- attach device to iommu mapping > * > @@ -69,9 +52,7 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, > return -EINVAL; > } > > - ret = configure_dma_max_seg_size(subdrv_dev); > - if (ret) > - return ret; > + dma_set_max_seg_size(subdrv_dev, UINT_MAX); > > if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) { > /* > @@ -89,9 +70,6 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, > ret = iommu_attach_device(priv->mapping, subdrv_dev); > } > > - if (ret) > - clear_dma_max_seg_size(subdrv_dev); > - > return ret; > } > > @@ -114,8 +92,6 @@ static void drm_iommu_detach_device(struct drm_device *drm_dev, > arm_iommu_attach_device(subdrv_dev, *dma_priv); > } else if (IS_ENABLED(CONFIG_IOMMU_DMA)) > iommu_detach_device(priv->mapping, subdrv_dev); > - > - clear_dma_max_seg_size(subdrv_dev); > } > > int exynos_drm_register_dma(struct drm_device *drm, struct device *dev, Best regards
Hi Marek, 20. 9. 4. 오후 4:28에 Marek Szyprowski 이(가) 쓴 글: > Hi Robin, > > On 03.09.2020 22:51, Robin Murphy wrote: >> Since commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms >> for platform devices"), struct platform_device already provides a >> dma_parms structure, so we can save allocating another one. >> >> Also the DMA segment size is simply a size, not a bitmask. >> >> Signed-off-by: Robin Murphy <robin.murphy@arm.com> > > I've sent a similar patch over 2 months ago, but it looks it got lost: > > https://lore.kernel.org/dri-devel/20200707110827.3760-1-m.szyprowski@samsung.com/ > > Inki, could You queue it for merge? Oops, sorry. Reviewed already but forgot to merge. Thanks, Inki Dae > >> --- >> drivers/gpu/drm/exynos/exynos_drm_dma.c | 26 +------------------------ >> 1 file changed, 1 insertion(+), 25 deletions(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dma.c b/drivers/gpu/drm/exynos/exynos_drm_dma.c >> index 58b89ec11b0e..9f25a5ebbf7d 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_dma.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_dma.c >> @@ -31,23 +31,6 @@ >> #define EXYNOS_DEV_ADDR_START 0x20000000 >> #define EXYNOS_DEV_ADDR_SIZE 0x40000000 >> >> -static inline int configure_dma_max_seg_size(struct device *dev) >> -{ >> - if (!dev->dma_parms) >> - dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL); >> - if (!dev->dma_parms) >> - return -ENOMEM; >> - >> - dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); >> - return 0; >> -} >> - >> -static inline void clear_dma_max_seg_size(struct device *dev) >> -{ >> - kfree(dev->dma_parms); >> - dev->dma_parms = NULL; >> -} >> - >> /* >> * drm_iommu_attach_device- attach device to iommu mapping >> * >> @@ -69,9 +52,7 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, >> return -EINVAL; >> } >> >> - ret = configure_dma_max_seg_size(subdrv_dev); >> - if (ret) >> - return ret; >> + dma_set_max_seg_size(subdrv_dev, UINT_MAX); >> >> if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) { >> /* >> @@ -89,9 +70,6 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, >> ret = iommu_attach_device(priv->mapping, subdrv_dev); >> } >> >> - if (ret) >> - clear_dma_max_seg_size(subdrv_dev); >> - >> return ret; >> } >> >> @@ -114,8 +92,6 @@ static void drm_iommu_detach_device(struct drm_device *drm_dev, >> arm_iommu_attach_device(subdrv_dev, *dma_priv); >> } else if (IS_ENABLED(CONFIG_IOMMU_DMA)) >> iommu_detach_device(priv->mapping, subdrv_dev); >> - >> - clear_dma_max_seg_size(subdrv_dev); >> } >> >> int exynos_drm_register_dma(struct drm_device *drm, struct device *dev, > > Best regards >
Hi Robin, As Marek said, he posted same patch[1] before so I merged it instead of you. I totally forgot to merge it. :( Sorry for confusing. [1] https://lore.kernel.org/dri-devel/20200707110827.3760-1-m.szyprowski@samsung.com/ Thanks, Inki Dae 20. 9. 4. 오전 5:51에 Robin Murphy 이(가) 쓴 글: > Since commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms > for platform devices"), struct platform_device already provides a > dma_parms structure, so we can save allocating another one. > > Also the DMA segment size is simply a size, not a bitmask. > > Signed-off-by: Robin Murphy <robin.murphy@arm.com> > --- > drivers/gpu/drm/exynos/exynos_drm_dma.c | 26 +------------------------ > 1 file changed, 1 insertion(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dma.c b/drivers/gpu/drm/exynos/exynos_drm_dma.c > index 58b89ec11b0e..9f25a5ebbf7d 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dma.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dma.c > @@ -31,23 +31,6 @@ > #define EXYNOS_DEV_ADDR_START 0x20000000 > #define EXYNOS_DEV_ADDR_SIZE 0x40000000 > > -static inline int configure_dma_max_seg_size(struct device *dev) > -{ > - if (!dev->dma_parms) > - dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL); > - if (!dev->dma_parms) > - return -ENOMEM; > - > - dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); > - return 0; > -} > - > -static inline void clear_dma_max_seg_size(struct device *dev) > -{ > - kfree(dev->dma_parms); > - dev->dma_parms = NULL; > -} > - > /* > * drm_iommu_attach_device- attach device to iommu mapping > * > @@ -69,9 +52,7 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, > return -EINVAL; > } > > - ret = configure_dma_max_seg_size(subdrv_dev); > - if (ret) > - return ret; > + dma_set_max_seg_size(subdrv_dev, UINT_MAX); > > if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) { > /* > @@ -89,9 +70,6 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, > ret = iommu_attach_device(priv->mapping, subdrv_dev); > } > > - if (ret) > - clear_dma_max_seg_size(subdrv_dev); > - > return ret; > } > > @@ -114,8 +92,6 @@ static void drm_iommu_detach_device(struct drm_device *drm_dev, > arm_iommu_attach_device(subdrv_dev, *dma_priv); > } else if (IS_ENABLED(CONFIG_IOMMU_DMA)) > iommu_detach_device(priv->mapping, subdrv_dev); > - > - clear_dma_max_seg_size(subdrv_dev); > } > > int exynos_drm_register_dma(struct drm_device *drm, struct device *dev, >
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dma.c b/drivers/gpu/drm/exynos/exynos_drm_dma.c index 58b89ec11b0e..9f25a5ebbf7d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dma.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dma.c @@ -31,23 +31,6 @@ #define EXYNOS_DEV_ADDR_START 0x20000000 #define EXYNOS_DEV_ADDR_SIZE 0x40000000 -static inline int configure_dma_max_seg_size(struct device *dev) -{ - if (!dev->dma_parms) - dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL); - if (!dev->dma_parms) - return -ENOMEM; - - dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); - return 0; -} - -static inline void clear_dma_max_seg_size(struct device *dev) -{ - kfree(dev->dma_parms); - dev->dma_parms = NULL; -} - /* * drm_iommu_attach_device- attach device to iommu mapping * @@ -69,9 +52,7 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, return -EINVAL; } - ret = configure_dma_max_seg_size(subdrv_dev); - if (ret) - return ret; + dma_set_max_seg_size(subdrv_dev, UINT_MAX); if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) { /* @@ -89,9 +70,6 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev, ret = iommu_attach_device(priv->mapping, subdrv_dev); } - if (ret) - clear_dma_max_seg_size(subdrv_dev); - return ret; } @@ -114,8 +92,6 @@ static void drm_iommu_detach_device(struct drm_device *drm_dev, arm_iommu_attach_device(subdrv_dev, *dma_priv); } else if (IS_ENABLED(CONFIG_IOMMU_DMA)) iommu_detach_device(priv->mapping, subdrv_dev); - - clear_dma_max_seg_size(subdrv_dev); } int exynos_drm_register_dma(struct drm_device *drm, struct device *dev,
Since commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms for platform devices"), struct platform_device already provides a dma_parms structure, so we can save allocating another one. Also the DMA segment size is simply a size, not a bitmask. Signed-off-by: Robin Murphy <robin.murphy@arm.com> --- drivers/gpu/drm/exynos/exynos_drm_dma.c | 26 +------------------------ 1 file changed, 1 insertion(+), 25 deletions(-)