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