[PATCH 23/23] drm/xe/svm: Add svm memory hints interface
Oak Zeng
oak.zeng at intel.com
Wed Jan 17 22:12:23 UTC 2024
Signed-off-by: Oak Zeng <oak.zeng at intel.com>
---
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
More information about the Intel-xe
mailing list