[PATCH v2] drm/xe: Create a helper function to init job's user fence

Lucas De Marchi lucas.demarchi at intel.com
Fri Mar 22 16:11:45 UTC 2024


On Thu, Mar 21, 2024 at 05:11:42PM +0100, Nirmoy Das wrote:
>Refactor xe_sync_entry_signal so it doesn't have to
>modify xe_sched_job struct instead create a new helper function
>to set user fence values for a job.
>
>v2: Move the sync type check to xe_sched_job_init_user_fence(Lucas)
>
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Cc: Matthew Auld <matthew.auld at intel.com>
>Cc: Matthew Brost <matthew.brost at intel.com>
>Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
>Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
>---
> drivers/gpu/drm/xe/xe_exec.c      |  9 +++++----
> drivers/gpu/drm/xe/xe_sched_job.c | 18 ++++++++++++++++++
> drivers/gpu/drm/xe/xe_sched_job.h |  3 +++
> drivers/gpu/drm/xe/xe_sync.c      |  7 +------
> drivers/gpu/drm/xe/xe_sync.h      |  1 -
> drivers/gpu/drm/xe/xe_vm.c        | 10 +++++-----
> 6 files changed, 32 insertions(+), 16 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
>index 7692ebfe7d47..9d53ef8c49cc 100644
>--- a/drivers/gpu/drm/xe/xe_exec.c
>+++ b/drivers/gpu/drm/xe/xe_exec.c
>@@ -249,7 +249,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> 				goto err_unlock_list;
> 			}
> 			for (i = 0; i < num_syncs; i++)
>-				xe_sync_entry_signal(&syncs[i], NULL, fence);
>+				xe_sync_entry_signal(&syncs[i], fence);
> 			xe_exec_queue_last_fence_set(q, vm, fence);
> 			dma_fence_put(fence);
> 		}
>@@ -359,9 +359,10 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> 		drm_gpuvm_resv_add_fence(&vm->gpuvm, exec, &job->drm.s_fence->finished,
> 					 DMA_RESV_USAGE_BOOKKEEP, DMA_RESV_USAGE_WRITE);
>
>-	for (i = 0; i < num_syncs; i++)
>-		xe_sync_entry_signal(&syncs[i], job,
>-				     &job->drm.s_fence->finished);
>+	for (i = 0; i < num_syncs; i++) {
>+		xe_sync_entry_signal(&syncs[i], &job->drm.s_fence->finished);
>+		xe_sched_job_init_user_fence(job, &syncs[i]);
>+	}
>
> 	if (xe_exec_queue_is_lr(q))
> 		q->ring_ops->emit_job(job);
>diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
>index 8151ddafb940..bfbce9b69087 100644
>--- a/drivers/gpu/drm/xe/xe_sched_job.c
>+++ b/drivers/gpu/drm/xe/xe_sched_job.c
>@@ -5,6 +5,7 @@
>
> #include "xe_sched_job.h"
>
>+#include <drm/xe_drm.h>
> #include <linux/dma-fence-array.h>
> #include <linux/slab.h>
>
>@@ -17,6 +18,7 @@
> #include "xe_macros.h"
> #include "xe_trace.h"
> #include "xe_vm.h"
>+#include "xe_sync_types.h"

wrong placement, otherwise lgtm

Feel free to carry by Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>
with that fixed.

thanks
Lucas De Marchi


More information about the Intel-xe mailing list