public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages
@ 2024-09-08 12:11 Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 2/5] drm/etnaviv: Use 'unsigned' " Sui Jingfeng
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Sui Jingfeng @ 2024-09-08 12:11 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Sui Jingfeng, Christian Gmeiner

The drm_prime_pages_to_sg() function takes an 'unsigned int' argument to
store the length of the page vector. The size of the object in number of
CPU pages can not be negative, hence, use 'unsigned' variable to store
the number of pages, instead of the 'signed' one.

Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
---

v2: Pick up tags and improve commit message

 drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
index 3524b5811682..6b98200068e4 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
@@ -17,7 +17,7 @@ static struct lock_class_key etnaviv_prime_lock_class;
 struct sg_table *etnaviv_gem_prime_get_sg_table(struct drm_gem_object *obj)
 {
 	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
-	int npages = obj->size >> PAGE_SHIFT;
+	unsigned int npages = obj->size >> PAGE_SHIFT;
 
 	if (WARN_ON(!etnaviv_obj->pages))  /* should have already pinned! */
 		return ERR_PTR(-EINVAL);
-- 
2.43.0


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

* [PATCH v2 2/5] drm/etnaviv: Use 'unsigned' type to count the number of pages
  2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
@ 2024-09-08 12:11 ` Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 3/5] drm/etnaviv: Drop the <linux/pm_runtime.h> header Sui Jingfeng
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Sui Jingfeng @ 2024-09-08 12:11 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Sui Jingfeng, Christian Gmeiner

The unpin_user_pages() function takes an 'unsigned long' argument to
store the number of userspace pages, and the struct drm_gem_object::size
is a size_t type. The number of pages can not be negative, hence, use
'unsigned' variable to count the number of pages.

Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
---

 v2: Pick up tags and improve commit message

 drivers/gpu/drm/etnaviv/etnaviv_gem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 5ffc31f32ac9..4ce3d2ea7767 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -686,7 +686,7 @@ static void etnaviv_gem_userptr_release(struct etnaviv_gem_object *etnaviv_obj)
 		kfree(etnaviv_obj->sgt);
 	}
 	if (etnaviv_obj->pages) {
-		int npages = etnaviv_obj->base.size >> PAGE_SHIFT;
+		unsigned int npages = etnaviv_obj->base.size >> PAGE_SHIFT;
 
 		unpin_user_pages(etnaviv_obj->pages, npages);
 		kvfree(etnaviv_obj->pages);
-- 
2.43.0


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

* [PATCH v2 3/5] drm/etnaviv: Drop the <linux/pm_runtime.h> header
  2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 2/5] drm/etnaviv: Use 'unsigned' " Sui Jingfeng
@ 2024-09-08 12:11 ` Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 4/5] drm/etnaviv: Fix missing mutex_destroy() Sui Jingfeng
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Sui Jingfeng @ 2024-09-08 12:11 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Sui Jingfeng, Christian Gmeiner

Currently, the etnaviv_gem_submit.c isn't call any runtime power management
functions. So drop this unused header, we can include it back when it
really get used though.

Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
---
 drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
index 3d0f8d182506..3c0a5c3e0e3d 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
@@ -6,7 +6,6 @@
 #include <drm/drm_file.h>
 #include <linux/dma-fence-array.h>
 #include <linux/file.h>
-#include <linux/pm_runtime.h>
 #include <linux/dma-resv.h>
 #include <linux/sync_file.h>
 #include <linux/uaccess.h>
-- 
2.43.0


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

* [PATCH v2 4/5] drm/etnaviv: Fix missing mutex_destroy()
  2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 2/5] drm/etnaviv: Use 'unsigned' " Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 3/5] drm/etnaviv: Drop the <linux/pm_runtime.h> header Sui Jingfeng
@ 2024-09-08 12:11 ` Sui Jingfeng
  2024-09-08 12:11 ` [PATCH v2 5/5] drm/etnaviv: Replace the '&pdev->dev' with 'dev' Sui Jingfeng
  2024-10-28 15:54 ` [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Lucas Stach
  4 siblings, 0 replies; 6+ messages in thread
From: Sui Jingfeng @ 2024-09-08 12:11 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Sui Jingfeng, Christian Gmeiner

Currently, the calling of mutex_destroy() is ignored on error handling
code path. It is safe for now, since mutex_destroy() actually does
nothing in non-debug builds. But the mutex_destroy() is used to mark
the mutex uninitialized on debug builds, and any subsequent use of the
mutex is forbidden.

It also could lead to problems if mutex_destroy() gets extended, add
missing mutex_destroy() to eliminate potential concerns.

Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
---

 v2: Pick up tags and fix one more missing mutex_destroy() 

 drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c | 2 ++
 drivers/gpu/drm/etnaviv/etnaviv_drv.c    | 1 +
 drivers/gpu/drm/etnaviv/etnaviv_gem.c    | 1 +
 drivers/gpu/drm/etnaviv/etnaviv_gpu.c    | 5 +++++
 drivers/gpu/drm/etnaviv/etnaviv_mmu.c    | 2 +-
 5 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c b/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c
index 721d633aece9..66a407f1b3ee 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_cmdbuf.c
@@ -55,6 +55,7 @@ etnaviv_cmdbuf_suballoc_new(struct device *dev)
 	return suballoc;
 
 free_suballoc:
+	mutex_destroy(&suballoc->lock);
 	kfree(suballoc);
 
 	return ERR_PTR(ret);
@@ -79,6 +80,7 @@ void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc)
 {
 	dma_free_wc(suballoc->dev, SUBALLOC_SIZE, suballoc->vaddr,
 		    suballoc->paddr);
+	mutex_destroy(&suballoc->lock);
 	kfree(suballoc);
 }
 
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index 6500f3999c5f..7844cd961a29 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -564,6 +564,7 @@ static int etnaviv_bind(struct device *dev)
 out_destroy_suballoc:
 	etnaviv_cmdbuf_suballoc_destroy(priv->cmdbuf_suballoc);
 out_free_priv:
+	mutex_destroy(&priv->gem_lock);
 	kfree(priv);
 out_put:
 	drm_dev_put(drm);
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 4ce3d2ea7767..4247a10f8d4f 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -514,6 +514,7 @@ void etnaviv_gem_free_object(struct drm_gem_object *obj)
 	etnaviv_obj->ops->release(etnaviv_obj);
 	drm_gem_object_release(obj);
 
+	mutex_destroy(&etnaviv_obj->lock);
 	kfree(etnaviv_obj);
 }
 
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index 7c7f97793ddd..3c869970cba4 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1929,8 +1929,13 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
 
 static void etnaviv_gpu_platform_remove(struct platform_device *pdev)
 {
+	struct etnaviv_gpu *gpu = dev_get_drvdata(&pdev->dev);
+
 	component_del(&pdev->dev, &gpu_ops);
 	pm_runtime_disable(&pdev->dev);
+
+	mutex_destroy(&gpu->lock);
+	mutex_destroy(&gpu->sched_lock);
 }
 
 static int etnaviv_gpu_rpm_suspend(struct device *dev)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c
index 1661d589bf3e..02d9408d41bc 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c
@@ -358,7 +358,7 @@ static void etnaviv_iommu_context_free(struct kref *kref)
 		container_of(kref, struct etnaviv_iommu_context, refcount);
 
 	etnaviv_cmdbuf_suballoc_unmap(context, &context->cmdbuf_mapping);
-
+	mutex_destroy(&context->lock);
 	context->global->ops->free(context);
 }
 void etnaviv_iommu_context_put(struct etnaviv_iommu_context *context)
-- 
2.43.0


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

* [PATCH v2 5/5] drm/etnaviv: Replace the '&pdev->dev' with 'dev'
  2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
                   ` (2 preceding siblings ...)
  2024-09-08 12:11 ` [PATCH v2 4/5] drm/etnaviv: Fix missing mutex_destroy() Sui Jingfeng
@ 2024-09-08 12:11 ` Sui Jingfeng
  2024-10-28 15:54 ` [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Lucas Stach
  4 siblings, 0 replies; 6+ messages in thread
From: Sui Jingfeng @ 2024-09-08 12:11 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Sui Jingfeng, Christian Gmeiner

In the etnaviv_pdev_probe() and etnaviv_gpu_platform_probe() function, the
value of '&pdev->dev' has been cached to the local auto variable 'dev'.
But some callers use 'dev', while the rest use '&pdev->dev'. To keep it
consistent, use 'dev' uniformly.

Tested-by: Christian Gmeiner <cgmeiner@igalia.com>
Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>
---
 drivers/gpu/drm/etnaviv/etnaviv_drv.c | 10 +++++-----
 drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 16 ++++++++--------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index 7844cd961a29..6591e420a051 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -609,7 +609,7 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
 			if (!of_device_is_available(core_node))
 				continue;
 
-			drm_of_component_match_add(&pdev->dev, &match,
+			drm_of_component_match_add(dev, &match,
 						   component_compare_of, core_node);
 		}
 	} else {
@@ -632,9 +632,9 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
 	 * bit to make sure we are allocating the command buffers and
 	 * TLBs in the lower 4 GiB address space.
 	 */
-	if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(40)) ||
-	    dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32))) {
-		dev_dbg(&pdev->dev, "No suitable DMA available\n");
+	if (dma_set_mask(dev, DMA_BIT_MASK(40)) ||
+	    dma_set_coherent_mask(dev, DMA_BIT_MASK(32))) {
+		dev_dbg(dev, "No suitable DMA available\n");
 		return -ENODEV;
 	}
 
@@ -645,7 +645,7 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
 	 */
 	first_node = etnaviv_of_first_available_node();
 	if (first_node) {
-		of_dma_configure(&pdev->dev, first_node, true);
+		of_dma_configure(dev, first_node, true);
 		of_node_put(first_node);
 	}
 
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index 3c869970cba4..d0df5c53a829 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1862,7 +1862,7 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
 	if (!gpu)
 		return -ENOMEM;
 
-	gpu->dev = &pdev->dev;
+	gpu->dev = dev;
 	mutex_init(&gpu->lock);
 	mutex_init(&gpu->sched_lock);
 
@@ -1876,8 +1876,8 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
 	if (gpu->irq < 0)
 		return gpu->irq;
 
-	err = devm_request_irq(&pdev->dev, gpu->irq, irq_handler, 0,
-			       dev_name(gpu->dev), gpu);
+	err = devm_request_irq(dev, gpu->irq, irq_handler, 0,
+			       dev_name(dev), gpu);
 	if (err) {
 		dev_err(dev, "failed to request IRQ%u: %d\n", gpu->irq, err);
 		return err;
@@ -1914,13 +1914,13 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
 	 * autosuspend delay is rather arbitary: no measurements have
 	 * yet been performed to determine an appropriate value.
 	 */
-	pm_runtime_use_autosuspend(gpu->dev);
-	pm_runtime_set_autosuspend_delay(gpu->dev, 200);
-	pm_runtime_enable(gpu->dev);
+	pm_runtime_use_autosuspend(dev);
+	pm_runtime_set_autosuspend_delay(dev, 200);
+	pm_runtime_enable(dev);
 
-	err = component_add(&pdev->dev, &gpu_ops);
+	err = component_add(dev, &gpu_ops);
 	if (err < 0) {
-		dev_err(&pdev->dev, "failed to register component: %d\n", err);
+		dev_err(dev, "failed to register component: %d\n", err);
 		return err;
 	}
 
-- 
2.43.0


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

* Re: [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages
  2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
                   ` (3 preceding siblings ...)
  2024-09-08 12:11 ` [PATCH v2 5/5] drm/etnaviv: Replace the '&pdev->dev' with 'dev' Sui Jingfeng
@ 2024-10-28 15:54 ` Lucas Stach
  4 siblings, 0 replies; 6+ messages in thread
From: Lucas Stach @ 2024-10-28 15:54 UTC (permalink / raw)
  To: Sui Jingfeng
  Cc: Christian Gmeiner, Russell King, David Airlie, Daniel Vetter,
	Thomas Zimmermann, Maxime Ripard, dri-devel, etnaviv,
	linux-kernel, Christian Gmeiner

Am Sonntag, dem 08.09.2024 um 20:11 +0800 schrieb Sui Jingfeng:
> The drm_prime_pages_to_sg() function takes an 'unsigned int' argument to
> store the length of the page vector. The size of the object in number of
> CPU pages can not be negative, hence, use 'unsigned' variable to store
> the number of pages, instead of the 'signed' one.
> 
> Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
> Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev>

Thanks, series applied to etnaviv/next.

> ---
> 
> v2: Pick up tags and improve commit message
> 
>  drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
> index 3524b5811682..6b98200068e4 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
> @@ -17,7 +17,7 @@ static struct lock_class_key etnaviv_prime_lock_class;
>  struct sg_table *etnaviv_gem_prime_get_sg_table(struct drm_gem_object *obj)
>  {
>  	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
> -	int npages = obj->size >> PAGE_SHIFT;
> +	unsigned int npages = obj->size >> PAGE_SHIFT;
>  
>  	if (WARN_ON(!etnaviv_obj->pages))  /* should have already pinned! */
>  		return ERR_PTR(-EINVAL);


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

end of thread, other threads:[~2024-10-28 15:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-08 12:11 [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Sui Jingfeng
2024-09-08 12:11 ` [PATCH v2 2/5] drm/etnaviv: Use 'unsigned' " Sui Jingfeng
2024-09-08 12:11 ` [PATCH v2 3/5] drm/etnaviv: Drop the <linux/pm_runtime.h> header Sui Jingfeng
2024-09-08 12:11 ` [PATCH v2 4/5] drm/etnaviv: Fix missing mutex_destroy() Sui Jingfeng
2024-09-08 12:11 ` [PATCH v2 5/5] drm/etnaviv: Replace the '&pdev->dev' with 'dev' Sui Jingfeng
2024-10-28 15:54 ` [PATCH v2 1/5] drm/etnaviv: Use unsigned type to count the number of pages Lucas Stach

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