libhsakmt: Update kfd_ioctl.h
Import the latest version from the kernel tree. Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Change-Id: If5f998ad55085ebd5020adaa382181204d834e3e
このコミットが含まれているのは:
+99
-12
@@ -32,9 +32,11 @@
|
||||
* - 1.4 - Indicate new SRAM EDC bit in device properties
|
||||
* - 1.5 - Add SVM API
|
||||
* - 1.6 - Query clear flags in SVM get_attr API
|
||||
* - 1.7 - Checkpoint Restore (CRIU) API
|
||||
* - 1.8 - CRIU - Support for SDMA transfers with GTT BOs
|
||||
*/
|
||||
#define KFD_IOCTL_MAJOR_VERSION 1
|
||||
#define KFD_IOCTL_MINOR_VERSION 6
|
||||
#define KFD_IOCTL_MINOR_VERSION 8
|
||||
|
||||
/*
|
||||
* Debug revision change log
|
||||
@@ -65,9 +67,13 @@
|
||||
* 8.0 - Expand runtime information given to the debugger
|
||||
* 8.1 - Allow the debugger to set the exception mask
|
||||
* 9.0 - Handle multiple exceptions from single trap signal
|
||||
* 10.0 - Query debug event returns both queue_id and gpu_id
|
||||
* 10.1 - Add additional debug capability information
|
||||
* 10.2 - Reserved
|
||||
* 10.3 - Pass context_save_restore_area size to user-space
|
||||
*/
|
||||
#define KFD_IOCTL_DBG_MAJOR_VERSION 9
|
||||
#define KFD_IOCTL_DBG_MINOR_VERSION 0
|
||||
#define KFD_IOCTL_DBG_MAJOR_VERSION 10
|
||||
#define KFD_IOCTL_DBG_MINOR_VERSION 3
|
||||
|
||||
struct kfd_ioctl_get_version_args {
|
||||
__u32 major_version; /* from KFD */
|
||||
@@ -141,7 +147,8 @@ struct kfd_queue_snapshot_entry {
|
||||
__u32 gpu_id;
|
||||
__u32 ring_size;
|
||||
__u32 queue_type;
|
||||
__u32 reserved[18];
|
||||
__u32 ctx_save_restore_area_size;
|
||||
__u32 reserved[17];
|
||||
};
|
||||
|
||||
struct kfd_dbg_device_info_entry {
|
||||
@@ -261,6 +268,7 @@ struct kfd_ioctl_dbg_wave_control_args {
|
||||
|
||||
#define KFD_INVALID_GPUID 0xffffffff
|
||||
#define KFD_INVALID_QUEUEID 0xffffffff
|
||||
#define KFD_INVALID_FD 0xffffffff
|
||||
|
||||
enum kfd_dbg_trap_override_mode {
|
||||
KFD_DBG_TRAP_OVERRIDE_OR = 0,
|
||||
@@ -442,8 +450,8 @@ struct kfd_runtime_info {
|
||||
/* KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT:
|
||||
* exception_mask: exception to clear (IN) on query and report (OUT)
|
||||
* ptr: unused
|
||||
* data1: source id (OUT)
|
||||
* data2: unused
|
||||
* data1: queue id (OUT)
|
||||
* data2: gpu id (OUT)
|
||||
* data3: unused
|
||||
* data4: unused
|
||||
*
|
||||
@@ -838,6 +846,7 @@ enum kfd_smi_event {
|
||||
};
|
||||
|
||||
#define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
|
||||
#define KFD_SMI_EVENT_MSG_SIZE 96
|
||||
|
||||
struct kfd_ioctl_smi_events_args {
|
||||
__u32 gpuid; /* to KFD */
|
||||
@@ -919,6 +928,81 @@ struct kfd_ioctl_spm_args {
|
||||
__u32 has_data_loss;
|
||||
};
|
||||
|
||||
/**************************************************************************************************
|
||||
* CRIU IOCTLs (Checkpoint Restore In Userspace)
|
||||
*
|
||||
* When checkpointing a process, the userspace application will perform:
|
||||
* 1. PROCESS_INFO op to determine current process information. This pauses execution and evicts
|
||||
* all the queues.
|
||||
* 2. CHECKPOINT op to checkpoint process contents (BOs, queues, events, svm-ranges)
|
||||
* 3. UNPAUSE op to un-evict all the queues
|
||||
*
|
||||
* When restoring a process, the CRIU userspace application will perform:
|
||||
*
|
||||
* 1. RESTORE op to restore process contents
|
||||
* 2. RESUME op to start the process
|
||||
*
|
||||
* Note: Queues are forced into an evicted state after a successful PROCESS_INFO. User
|
||||
* application needs to perform an UNPAUSE operation after calling PROCESS_INFO.
|
||||
*/
|
||||
|
||||
enum kfd_criu_op {
|
||||
KFD_CRIU_OP_PROCESS_INFO,
|
||||
KFD_CRIU_OP_CHECKPOINT,
|
||||
KFD_CRIU_OP_UNPAUSE,
|
||||
KFD_CRIU_OP_RESTORE,
|
||||
KFD_CRIU_OP_RESUME,
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_criu_args - Arguments perform CRIU operation
|
||||
* @devices: [in/out] User pointer to memory location for devices information.
|
||||
* This is an array of type kfd_criu_device_bucket.
|
||||
* @bos: [in/out] User pointer to memory location for BOs information
|
||||
* This is an array of type kfd_criu_bo_bucket.
|
||||
* @priv_data: [in/out] User pointer to memory location for private data
|
||||
* @priv_data_size: [in/out] Size of priv_data in bytes
|
||||
* @num_devices: [in/out] Number of GPUs used by process. Size of @devices array.
|
||||
* @num_bos [in/out] Number of BOs used by process. Size of @bos array.
|
||||
* @num_objects: [in/out] Number of objects used by process. Objects are opaque to
|
||||
* user application.
|
||||
* @pid: [in/out] PID of the process being checkpointed
|
||||
* @op [in] Type of operation (kfd_criu_op)
|
||||
*
|
||||
* Return: 0 on success, -errno on failure
|
||||
*/
|
||||
struct kfd_ioctl_criu_args {
|
||||
__u64 devices; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 bos; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 priv_data; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 priv_data_size; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_devices; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_bos; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_objects; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 pid; /* Used during ops: PROCESS_INFO, RESUME */
|
||||
__u32 op;
|
||||
};
|
||||
|
||||
struct kfd_criu_device_bucket {
|
||||
__u32 user_gpu_id;
|
||||
__u32 actual_gpu_id;
|
||||
__u32 drm_fd;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct kfd_criu_bo_bucket {
|
||||
__u64 addr;
|
||||
__u64 size;
|
||||
__u64 offset;
|
||||
__u64 restored_offset; /* During restore, updated offset for BO */
|
||||
__u32 gpu_id; /* This is the user_gpu_id */
|
||||
__u32 alloc_flags;
|
||||
__u32 dmabuf_fd;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/* CRIU IOCTLs - END */
|
||||
/**************************************************************************************************/
|
||||
/* Register offset inside the remapped mmio page
|
||||
*/
|
||||
enum kfd_mmio_remap {
|
||||
@@ -1094,7 +1178,7 @@ struct kfd_ioctl_svm_args {
|
||||
__u32 op;
|
||||
__u32 nattr;
|
||||
/* Variable length array of attributes */
|
||||
struct kfd_ioctl_svm_attribute attrs[0];
|
||||
struct kfd_ioctl_svm_attribute attrs[];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1177,16 +1261,16 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
#define AMDKFD_IOC_WAIT_EVENTS \
|
||||
AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_REGISTER \
|
||||
#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED \
|
||||
AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_UNREGISTER \
|
||||
#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED \
|
||||
AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_ADDRESS_WATCH \
|
||||
#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED \
|
||||
AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_WAVE_CONTROL \
|
||||
#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED \
|
||||
AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
|
||||
|
||||
#define AMDKFD_IOC_SET_SCRATCH_BACKING_VA \
|
||||
@@ -1240,8 +1324,11 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
#define AMDKFD_IOC_SET_XNACK_MODE \
|
||||
AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
|
||||
|
||||
#define AMDKFD_IOC_CRIU_OP \
|
||||
AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
|
||||
|
||||
#define AMDKFD_COMMAND_START 0x01
|
||||
#define AMDKFD_COMMAND_END 0x22
|
||||
#define AMDKFD_COMMAND_END 0x23
|
||||
|
||||
/* non-upstream ioctls */
|
||||
#define AMDKFD_IOC_IPC_IMPORT_HANDLE \
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする