Commit 4a349c86 authored by Rodrigo Vivi's avatar Rodrigo Vivi

drm/xe/uapi: Differentiate WAIT_OP from WAIT_MASK

On one hand the WAIT_OP represents the operation use for waiting such
as ==, !=, > and so on. On the other hand, the mask is applied to the
value used for comparision. Split those two to bring clarity to the uapi.
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarFrancois Dugast <francois.dugast@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
parent 9ad74351
...@@ -25,22 +25,22 @@ static int do_compare(u64 addr, u64 value, u64 mask, u16 op) ...@@ -25,22 +25,22 @@ static int do_compare(u64 addr, u64 value, u64 mask, u16 op)
return -EFAULT; return -EFAULT;
switch (op) { switch (op) {
case DRM_XE_UFENCE_WAIT_EQ: case DRM_XE_UFENCE_WAIT_OP_EQ:
passed = (rvalue & mask) == (value & mask); passed = (rvalue & mask) == (value & mask);
break; break;
case DRM_XE_UFENCE_WAIT_NEQ: case DRM_XE_UFENCE_WAIT_OP_NEQ:
passed = (rvalue & mask) != (value & mask); passed = (rvalue & mask) != (value & mask);
break; break;
case DRM_XE_UFENCE_WAIT_GT: case DRM_XE_UFENCE_WAIT_OP_GT:
passed = (rvalue & mask) > (value & mask); passed = (rvalue & mask) > (value & mask);
break; break;
case DRM_XE_UFENCE_WAIT_GTE: case DRM_XE_UFENCE_WAIT_OP_GTE:
passed = (rvalue & mask) >= (value & mask); passed = (rvalue & mask) >= (value & mask);
break; break;
case DRM_XE_UFENCE_WAIT_LT: case DRM_XE_UFENCE_WAIT_OP_LT:
passed = (rvalue & mask) < (value & mask); passed = (rvalue & mask) < (value & mask);
break; break;
case DRM_XE_UFENCE_WAIT_LTE: case DRM_XE_UFENCE_WAIT_OP_LTE:
passed = (rvalue & mask) <= (value & mask); passed = (rvalue & mask) <= (value & mask);
break; break;
default: default:
...@@ -81,7 +81,7 @@ static int check_hw_engines(struct xe_device *xe, ...@@ -81,7 +81,7 @@ static int check_hw_engines(struct xe_device *xe,
#define VALID_FLAGS (DRM_XE_UFENCE_WAIT_FLAG_SOFT_OP | \ #define VALID_FLAGS (DRM_XE_UFENCE_WAIT_FLAG_SOFT_OP | \
DRM_XE_UFENCE_WAIT_FLAG_ABSTIME) DRM_XE_UFENCE_WAIT_FLAG_ABSTIME)
#define MAX_OP DRM_XE_UFENCE_WAIT_LTE #define MAX_OP DRM_XE_UFENCE_WAIT_OP_LTE
static long to_jiffies_timeout(struct xe_device *xe, static long to_jiffies_timeout(struct xe_device *xe,
struct drm_xe_wait_user_fence *args) struct drm_xe_wait_user_fence *args)
......
...@@ -915,12 +915,12 @@ struct drm_xe_wait_user_fence { ...@@ -915,12 +915,12 @@ struct drm_xe_wait_user_fence {
*/ */
__u64 addr; __u64 addr;
#define DRM_XE_UFENCE_WAIT_EQ 0 #define DRM_XE_UFENCE_WAIT_OP_EQ 0x0
#define DRM_XE_UFENCE_WAIT_NEQ 1 #define DRM_XE_UFENCE_WAIT_OP_NEQ 0x1
#define DRM_XE_UFENCE_WAIT_GT 2 #define DRM_XE_UFENCE_WAIT_OP_GT 0x2
#define DRM_XE_UFENCE_WAIT_GTE 3 #define DRM_XE_UFENCE_WAIT_OP_GTE 0x3
#define DRM_XE_UFENCE_WAIT_LT 4 #define DRM_XE_UFENCE_WAIT_OP_LT 0x4
#define DRM_XE_UFENCE_WAIT_LTE 5 #define DRM_XE_UFENCE_WAIT_OP_LTE 0x5
/** @op: wait operation (type of comparison) */ /** @op: wait operation (type of comparison) */
__u16 op; __u16 op;
...@@ -935,12 +935,13 @@ struct drm_xe_wait_user_fence { ...@@ -935,12 +935,13 @@ struct drm_xe_wait_user_fence {
/** @value: compare value */ /** @value: compare value */
__u64 value; __u64 value;
#define DRM_XE_UFENCE_WAIT_U8 0xffu #define DRM_XE_UFENCE_WAIT_MASK_U8 0xffu
#define DRM_XE_UFENCE_WAIT_U16 0xffffu #define DRM_XE_UFENCE_WAIT_MASK_U16 0xffffu
#define DRM_XE_UFENCE_WAIT_U32 0xffffffffu #define DRM_XE_UFENCE_WAIT_MASK_U32 0xffffffffu
#define DRM_XE_UFENCE_WAIT_U64 0xffffffffffffffffu #define DRM_XE_UFENCE_WAIT_MASK_U64 0xffffffffffffffffu
/** @mask: comparison mask */ /** @mask: comparison mask */
__u64 mask; __u64 mask;
/** /**
* @timeout: how long to wait before bailing, value in nanoseconds. * @timeout: how long to wait before bailing, value in nanoseconds.
* Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout) * Without DRM_XE_UFENCE_WAIT_FLAG_ABSTIME flag set (relative timeout)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment