Signed-off-by: Oak Zeng <oak.zeng@xxxxxxxxx> --- include/uapi/drm/xe_drm.h | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h index 50bbea0992d9..551ed8706097 100644 --- a/include/uapi/drm/xe_drm.h +++ b/include/uapi/drm/xe_drm.h @@ -80,6 +80,7 @@ extern "C" { * - &DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY * - &DRM_IOCTL_XE_EXEC * - &DRM_IOCTL_XE_WAIT_USER_FENCE + * - &DRM_IOCTL_XE_SVM */ /* @@ -100,6 +101,7 @@ extern "C" { #define DRM_XE_EXEC_QUEUE_GET_PROPERTY 0x08 #define DRM_XE_EXEC 0x09 #define DRM_XE_WAIT_USER_FENCE 0x0a +#define DRM_XE_SVM 0x0b /* Must be kept compact -- no holes */ #define DRM_IOCTL_XE_DEVICE_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query) @@ -113,6 +115,7 @@ extern "C" { #define DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_GET_PROPERTY, struct drm_xe_exec_queue_get_property) #define DRM_IOCTL_XE_EXEC DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec) #define DRM_IOCTL_XE_WAIT_USER_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence) +#define DRM_IOCTL_XE_SVM DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_SVM, struct drm_xe_svm_args) /** * DOC: Xe IOCTL Extensions @@ -1339,6 +1342,43 @@ struct drm_xe_wait_user_fence { __u64 reserved[2]; }; +enum drm_xe_svm_attr_type { + DRM_XE_SVM_ATTR_PREFERRED_LOC, + DRM_XE_SVM_ATTR_MIGRATION_GRANULARITY, + DRM_XE_SVM_ATTR_ATOMIC, + DRM_XE_SVM_ATTR_CACHE, + DRM_XE_SVM_ATTR_PREFETCH_LOC, + DRM_XE_SVM_ATTR_ACCESS_PATTERN, +}; + +struct drm_xe_svm_attr { + __u32 type; + __u32 value; +}; + +enum drm_xe_svm_op { + DRM_XE_SVM_OP_SET_ATTR, + DRM_XE_SVM_OP_GET_ATTR, +}; + +/** + * struct drm_xe_svm_args - Input of &DRM_IOCTL_XE_SVM + * + * Set or get memory attributes to a virtual address range + */ +struct drm_xe_svm_args { + /** @start: start of the virtual address range */ + __u64 start; + /** @size: size of the virtual address range */ + __u64 size; + /** @op: operation, either set or get */ + __u32 op; + /** @nattr: number of attributes */ + __u32 nattr; + /** @attrs: An array of attributes */ + struct drm_xe_svm_attr attrs[]; +}; + #if defined(__cplusplus) } #endif -- 2.26.3