diff options
author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-11-22 14:38:27 +0000 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 11:45:19 -0500 |
commit | 37d078e51b4cba30f90667a2b35e16725d649956 (patch) | |
tree | cd381c0a0cd874a9bcb0a103493e38dd3be9a707 /drivers/gpu/drm/xe/xe_sync.c | |
parent | 60a6a849fcb338b8a3f3d1ec9ec50c002add925a (diff) |
drm/xe/uapi: Split xe_sync types from flags
Let's continue on the uapi clean-up with more splits
with stuff into their own exclusive fields instead of
reusing stuff.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/xe_sync.c')
-rw-r--r-- | drivers/gpu/drm/xe/xe_sync.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/drivers/gpu/drm/xe/xe_sync.c b/drivers/gpu/drm/xe/xe_sync.c index ea96ba4b41da..936227e79483 100644 --- a/drivers/gpu/drm/xe/xe_sync.c +++ b/drivers/gpu/drm/xe/xe_sync.c @@ -17,8 +17,6 @@ #include "xe_macros.h" #include "xe_sched_job_types.h" -#define SYNC_FLAGS_TYPE_MASK 0x3 - struct user_fence { struct xe_device *xe; struct kref refcount; @@ -109,15 +107,13 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, if (copy_from_user(&sync_in, sync_user, sizeof(*sync_user))) return -EFAULT; - if (XE_IOCTL_DBG(xe, sync_in.flags & - ~(SYNC_FLAGS_TYPE_MASK | DRM_XE_SYNC_FLAG_SIGNAL)) || - XE_IOCTL_DBG(xe, sync_in.pad) || + if (XE_IOCTL_DBG(xe, sync_in.flags & ~DRM_XE_SYNC_FLAG_SIGNAL) || XE_IOCTL_DBG(xe, sync_in.reserved[0] || sync_in.reserved[1])) return -EINVAL; signal = sync_in.flags & DRM_XE_SYNC_FLAG_SIGNAL; - switch (sync_in.flags & SYNC_FLAGS_TYPE_MASK) { - case DRM_XE_SYNC_FLAG_SYNCOBJ: + switch (sync_in.type) { + case DRM_XE_SYNC_TYPE_SYNCOBJ: if (XE_IOCTL_DBG(xe, in_lr_mode && signal)) return -EOPNOTSUPP; @@ -135,7 +131,7 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, } break; - case DRM_XE_SYNC_FLAG_TIMELINE_SYNCOBJ: + case DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ: if (XE_IOCTL_DBG(xe, in_lr_mode && signal)) return -EOPNOTSUPP; @@ -165,12 +161,7 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, } break; - case DRM_XE_SYNC_FLAG_DMA_BUF: - if (XE_IOCTL_DBG(xe, "TODO")) - return -EINVAL; - break; - - case DRM_XE_SYNC_FLAG_USER_FENCE: + case DRM_XE_SYNC_TYPE_USER_FENCE: if (XE_IOCTL_DBG(xe, !signal)) return -EOPNOTSUPP; @@ -192,6 +183,7 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, return -EINVAL; } + sync->type = sync_in.type; sync->flags = sync_in.flags; sync->timeline_value = sync_in.timeline_value; @@ -252,8 +244,7 @@ void xe_sync_entry_signal(struct xe_sync_entry *sync, struct xe_sched_job *job, user_fence_put(sync->ufence); dma_fence_put(fence); } - } else if ((sync->flags & SYNC_FLAGS_TYPE_MASK) == - DRM_XE_SYNC_FLAG_USER_FENCE) { + } else if (sync->type == DRM_XE_SYNC_TYPE_USER_FENCE) { job->user_fence.used = true; job->user_fence.addr = sync->addr; job->user_fence.value = sync->timeline_value; |