* [PATCH] accel/ivpu: Improve BO alloc/free warnings
@ 2025-09-25 14:51 Maciej Falkowski
2025-10-01 7:51 ` Karol Wachowski
0 siblings, 1 reply; 3+ messages in thread
From: Maciej Falkowski @ 2025-09-25 14:51 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, jeff.hugo, karol.wachowski, lizhi.hou,
Jacek Lawrynowicz, Maciej Falkowski
From: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Add additional warnings related to allocation and
deallocation of buffer objects to better track possible
memory leaks and generally the BO's lifecycle.
Introduce checks for handle_count to ensure it is zero
before creating a new handle, and exactly one
after successfully creating a handle.
Introduce also a check to warn if the VMA node is not
empty when freeing the buffer object.
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
---
drivers/accel/ivpu/ivpu_gem.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c
index 38ecf933d144..e9830ad48d4b 100644
--- a/drivers/accel/ivpu/ivpu_gem.c
+++ b/drivers/accel/ivpu/ivpu_gem.c
@@ -332,6 +332,7 @@ static void ivpu_gem_bo_free(struct drm_gem_object *obj)
drm_WARN_ON(&vdev->drm, bo->ctx);
drm_WARN_ON(obj->dev, refcount_read(&bo->base.pages_use_count) > 1);
+ drm_WARN_ON(obj->dev, bo->base.base.vma_node.vm_files.rb_node);
drm_gem_shmem_free(&bo->base);
}
@@ -370,12 +371,16 @@ int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
return PTR_ERR(bo);
}
+ drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 0);
+
ret = drm_gem_handle_create(file, &bo->base.base, &args->handle);
- if (ret)
+ if (ret) {
ivpu_err(vdev, "Failed to create handle for BO: %pe (ctx %u size %llu flags 0x%x)",
bo, file_priv->ctx.id, args->size, args->flags);
- else
+ } else {
args->vpu_addr = bo->vpu_addr;
+ drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 1);
+ }
drm_gem_object_put(&bo->base.base);
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] accel/ivpu: Improve BO alloc/free warnings
2025-09-25 14:51 [PATCH] accel/ivpu: Improve BO alloc/free warnings Maciej Falkowski
@ 2025-10-01 7:51 ` Karol Wachowski
2025-10-01 8:05 ` Karol Wachowski
0 siblings, 1 reply; 3+ messages in thread
From: Karol Wachowski @ 2025-10-01 7:51 UTC (permalink / raw)
To: Maciej Falkowski, dri-devel
Cc: oded.gabbay, jeff.hugo, lizhi.hou, Jacek Lawrynowicz
Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
On 9/25/2025 4:51 PM, Maciej Falkowski wrote:
> From: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
>
> Add additional warnings related to allocation and
> deallocation of buffer objects to better track possible
> memory leaks and generally the BO's lifecycle.
>
> Introduce checks for handle_count to ensure it is zero
> before creating a new handle, and exactly one
> after successfully creating a handle.
>
> Introduce also a check to warn if the VMA node is not
> empty when freeing the buffer object.
>
> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> Signed-off-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
> ---
> drivers/accel/ivpu/ivpu_gem.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c
> index 38ecf933d144..e9830ad48d4b 100644
> --- a/drivers/accel/ivpu/ivpu_gem.c
> +++ b/drivers/accel/ivpu/ivpu_gem.c
> @@ -332,6 +332,7 @@ static void ivpu_gem_bo_free(struct drm_gem_object *obj)
> drm_WARN_ON(&vdev->drm, bo->ctx);
>
> drm_WARN_ON(obj->dev, refcount_read(&bo->base.pages_use_count) > 1);
> + drm_WARN_ON(obj->dev, bo->base.base.vma_node.vm_files.rb_node);
> drm_gem_shmem_free(&bo->base);
> }
>
> @@ -370,12 +371,16 @@ int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
> return PTR_ERR(bo);
> }
>
> + drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 0);
> +
> ret = drm_gem_handle_create(file, &bo->base.base, &args->handle);
> - if (ret)
> + if (ret) {
> ivpu_err(vdev, "Failed to create handle for BO: %pe (ctx %u size %llu flags 0x%x)",
> bo, file_priv->ctx.id, args->size, args->flags);
> - else
> + } else {
> args->vpu_addr = bo->vpu_addr;
> + drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 1);
> + }
>
> drm_gem_object_put(&bo->base.base);
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] accel/ivpu: Improve BO alloc/free warnings
2025-10-01 7:51 ` Karol Wachowski
@ 2025-10-01 8:05 ` Karol Wachowski
0 siblings, 0 replies; 3+ messages in thread
From: Karol Wachowski @ 2025-10-01 8:05 UTC (permalink / raw)
To: Maciej Falkowski, dri-devel
Cc: oded.gabbay, jeff.hugo, lizhi.hou, Jacek Lawrynowicz
Applied to drm-misc-next
On 10/1/2025 9:51 AM, Karol Wachowski wrote:
> Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
>
> On 9/25/2025 4:51 PM, Maciej Falkowski wrote:
>> From: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
>>
>> Add additional warnings related to allocation and
>> deallocation of buffer objects to better track possible
>> memory leaks and generally the BO's lifecycle.
>>
>> Introduce checks for handle_count to ensure it is zero
>> before creating a new handle, and exactly one
>> after successfully creating a handle.
>>
>> Introduce also a check to warn if the VMA node is not
>> empty when freeing the buffer object.
>>
>> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
>> Signed-off-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
>> ---
>> drivers/accel/ivpu/ivpu_gem.c | 9 +++++++--
>> 1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c
>> index 38ecf933d144..e9830ad48d4b 100644
>> --- a/drivers/accel/ivpu/ivpu_gem.c
>> +++ b/drivers/accel/ivpu/ivpu_gem.c
>> @@ -332,6 +332,7 @@ static void ivpu_gem_bo_free(struct drm_gem_object *obj)
>> drm_WARN_ON(&vdev->drm, bo->ctx);
>>
>> drm_WARN_ON(obj->dev, refcount_read(&bo->base.pages_use_count) > 1);
>> + drm_WARN_ON(obj->dev, bo->base.base.vma_node.vm_files.rb_node);
>> drm_gem_shmem_free(&bo->base);
>> }
>>
>> @@ -370,12 +371,16 @@ int ivpu_bo_create_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
>> return PTR_ERR(bo);
>> }
>>
>> + drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 0);
>> +
>> ret = drm_gem_handle_create(file, &bo->base.base, &args->handle);
>> - if (ret)
>> + if (ret) {
>> ivpu_err(vdev, "Failed to create handle for BO: %pe (ctx %u size %llu flags 0x%x)",
>> bo, file_priv->ctx.id, args->size, args->flags);
>> - else
>> + } else {
>> args->vpu_addr = bo->vpu_addr;
>> + drm_WARN_ON(&vdev->drm, bo->base.base.handle_count != 1);
>> + }
>>
>> drm_gem_object_put(&bo->base.base);
>>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-10-01 8:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-25 14:51 [PATCH] accel/ivpu: Improve BO alloc/free warnings Maciej Falkowski
2025-10-01 7:51 ` Karol Wachowski
2025-10-01 8:05 ` Karol Wachowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).