diff mbox series

drm/exynos: Drop local dma_parms

Message ID dade9fce82e4905f3d61494785f81604674df5da.1599166024.git.robin.murphy@arm.com
State New
Headers show
Series drm/exynos: Drop local dma_parms | expand

Commit Message

Robin Murphy Sept. 3, 2020, 8:51 p.m. UTC
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(-)

Comments

Marek Szyprowski Sept. 4, 2020, 7:28 a.m. UTC | #1
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
대인기/Tizen Platform Lab(SR)/삼성전자 Sept. 21, 2020, 1:17 a.m. UTC | #2
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

>
대인기/Tizen Platform Lab(SR)/삼성전자 Sept. 22, 2020, 4:52 a.m. UTC | #3
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 mbox series

Patch

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,