[PATCH 3/5] drm/xe: Take a reference to xe file when user creates exec_queue
Matthew Brost
matthew.brost at intel.com
Mon Jul 8 21:25:29 UTC 2024
On Mon, Jul 08, 2024 at 01:21:01PM -0700, Umesh Nerlige Ramappa wrote:
> Take a reference to xe file object when user creates an exec queue so
> that the xe file object is available for the lifetime of the queue.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
> ---
> drivers/gpu/drm/xe/xe_exec_queue.c | 6 ++++++
> drivers/gpu/drm/xe/xe_exec_queue_types.h | 3 +++
> 2 files changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 0ba37835849b..b01eccdd75ba 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -37,6 +37,10 @@ static void __xe_exec_queue_free(struct xe_exec_queue *q)
> {
> if (q->vm)
> xe_vm_put(q->vm);
> +
> + if (q->xef)
> + xe_file_put(q->xef);
> +
> kfree(q);
> }
>
> @@ -640,6 +644,8 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data,
> if (XE_IOCTL_DBG(xe, err))
> goto put_exec_queue;
> }
> +
> + q->xef = xe_file_get(xef);
This doesn't look like the right place. All exec queues include VM bind
ones should have a ref.
With that, the right place seems to be right before or after args->exec_queue_id = id;
Matt
> }
>
> mutex_lock(&xef->exec_queue.lock);
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> index ded9f9396429..f768e48f31e4 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> @@ -38,6 +38,9 @@ enum xe_exec_queue_priority {
> * a kernel object.
> */
> struct xe_exec_queue {
> + /** @xef: Back pointer to xe file is this is user created exec queue */
> + struct xe_file *xef;
> +
> /** @gt: graphics tile this exec queue can submit to */
> struct xe_gt *gt;
> /**
> --
> 2.38.1
>
More information about the Intel-xe
mailing list