diff options
| author | Andrew Lewycky <Andrew.Lewycky@amd.com> | 2014-12-07 10:05:11 -0500 |
|---|---|---|
| committer | Oded Gabbay <oded.gabbay@gmail.com> | 2015-05-19 06:02:00 -0400 |
| commit | 29a5d3eb9a7612b26ba098a0db65e54372612d07 (patch) | |
| tree | 69684f6c29fb18ffd6d12ab9542eba5a0c190272 /include/uapi/linux/kfd_ioctl.h | |
| parent | 2249d55827c9e5d5731d7a8622ecd366d8756bbb (diff) | |
drm/amdkfd: add events IOCTL set definitions
- AMDKFD_IOC_CREATE_EVENT:
Creates a new event of a specified type
- AMDKFD_IOC_DESTROY_EVENT:
Destroys an existing event
- AMDKFD_IOC_SET_EVENT:
Signal an existing event
- AMDKFD_IOC_RESET_EVENT:
Reset an existing event
- AMDKFD_IOC_WAIT_EVENTS:
Wait on event(s) until they are signaled
v2:
- Move the limit of the signal events to kfd_ioctl.h so it
can be used by userspace
v3:
- Change all bool fields in struct kfd_memory_exception_failure
to uint32_t
Signed-off-by: Andrew Lewycky <Andrew.Lewycky@amd.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'include/uapi/linux/kfd_ioctl.h')
| -rw-r--r-- | include/uapi/linux/kfd_ioctl.h | 96 |
1 files changed, 94 insertions, 2 deletions
diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h index af94f31e33ac..4ca35a8f9891 100644 --- a/include/uapi/linux/kfd_ioctl.h +++ b/include/uapi/linux/kfd_ioctl.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #include <linux/ioctl.h> | 27 | #include <linux/ioctl.h> |
| 28 | 28 | ||
| 29 | #define KFD_IOCTL_MAJOR_VERSION 1 | 29 | #define KFD_IOCTL_MAJOR_VERSION 1 |
| 30 | #define KFD_IOCTL_MINOR_VERSION 0 | 30 | #define KFD_IOCTL_MINOR_VERSION 1 |
| 31 | 31 | ||
| 32 | struct kfd_ioctl_get_version_args { | 32 | struct kfd_ioctl_get_version_args { |
| 33 | uint32_t major_version; /* from KFD */ | 33 | uint32_t major_version; /* from KFD */ |
| @@ -128,6 +128,83 @@ struct kfd_ioctl_get_process_apertures_args { | |||
| 128 | uint32_t pad; | 128 | uint32_t pad; |
| 129 | }; | 129 | }; |
| 130 | 130 | ||
| 131 | /* Matching HSA_EVENTTYPE */ | ||
| 132 | #define KFD_IOC_EVENT_SIGNAL 0 | ||
| 133 | #define KFD_IOC_EVENT_NODECHANGE 1 | ||
| 134 | #define KFD_IOC_EVENT_DEVICESTATECHANGE 2 | ||
| 135 | #define KFD_IOC_EVENT_HW_EXCEPTION 3 | ||
| 136 | #define KFD_IOC_EVENT_SYSTEM_EVENT 4 | ||
| 137 | #define KFD_IOC_EVENT_DEBUG_EVENT 5 | ||
| 138 | #define KFD_IOC_EVENT_PROFILE_EVENT 6 | ||
| 139 | #define KFD_IOC_EVENT_QUEUE_EVENT 7 | ||
| 140 | #define KFD_IOC_EVENT_MEMORY 8 | ||
| 141 | |||
| 142 | #define KFD_IOC_WAIT_RESULT_COMPLETE 0 | ||
| 143 | #define KFD_IOC_WAIT_RESULT_TIMEOUT 1 | ||
| 144 | #define KFD_IOC_WAIT_RESULT_FAIL 2 | ||
| 145 | |||
| 146 | #define KFD_SIGNAL_EVENT_LIMIT 256 | ||
| 147 | |||
| 148 | struct kfd_ioctl_create_event_args { | ||
| 149 | uint64_t event_page_offset; /* from KFD */ | ||
| 150 | uint32_t event_trigger_data; /* from KFD - signal events only */ | ||
| 151 | uint32_t event_type; /* to KFD */ | ||
| 152 | uint32_t auto_reset; /* to KFD */ | ||
| 153 | uint32_t node_id; /* to KFD - only valid for certain | ||
| 154 | event types */ | ||
| 155 | uint32_t event_id; /* from KFD */ | ||
| 156 | uint32_t event_slot_index; /* from KFD */ | ||
| 157 | }; | ||
| 158 | |||
| 159 | struct kfd_ioctl_destroy_event_args { | ||
| 160 | uint32_t event_id; /* to KFD */ | ||
| 161 | uint32_t pad; | ||
| 162 | }; | ||
| 163 | |||
| 164 | struct kfd_ioctl_set_event_args { | ||
| 165 | uint32_t event_id; /* to KFD */ | ||
| 166 | uint32_t pad; | ||
| 167 | }; | ||
| 168 | |||
| 169 | struct kfd_ioctl_reset_event_args { | ||
| 170 | uint32_t event_id; /* to KFD */ | ||
| 171 | uint32_t pad; | ||
| 172 | }; | ||
| 173 | |||
| 174 | struct kfd_memory_exception_failure { | ||
| 175 | uint32_t NotPresent; /* Page not present or supervisor privilege */ | ||
| 176 | uint32_t ReadOnly; /* Write access to a read-only page */ | ||
| 177 | uint32_t NoExecute; /* Execute access to a page marked NX */ | ||
| 178 | uint32_t pad; | ||
| 179 | }; | ||
| 180 | |||
| 181 | /* memory exception data*/ | ||
| 182 | struct kfd_hsa_memory_exception_data { | ||
| 183 | struct kfd_memory_exception_failure failure; | ||
| 184 | uint64_t va; | ||
| 185 | uint32_t gpu_id; | ||
| 186 | uint32_t pad; | ||
| 187 | }; | ||
| 188 | |||
| 189 | /* Event data*/ | ||
| 190 | struct kfd_event_data { | ||
| 191 | union { | ||
| 192 | struct kfd_hsa_memory_exception_data memory_exception_data; | ||
| 193 | }; /* From KFD */ | ||
| 194 | uint64_t kfd_event_data_ext; /* pointer to an extension structure | ||
| 195 | for future exception types */ | ||
| 196 | uint32_t event_id; /* to KFD */ | ||
| 197 | uint32_t pad; | ||
| 198 | }; | ||
| 199 | |||
| 200 | struct kfd_ioctl_wait_events_args { | ||
| 201 | uint64_t events_ptr; /* to KFD */ | ||
| 202 | uint32_t num_events; /* to KFD */ | ||
| 203 | uint32_t wait_for_all; /* to KFD */ | ||
| 204 | uint32_t timeout; /* to KFD */ | ||
| 205 | uint32_t wait_result; /* from KFD */ | ||
| 206 | }; | ||
| 207 | |||
| 131 | #define AMDKFD_IOCTL_BASE 'K' | 208 | #define AMDKFD_IOCTL_BASE 'K' |
| 132 | #define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr) | 209 | #define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr) |
| 133 | #define AMDKFD_IOR(nr, type) _IOR(AMDKFD_IOCTL_BASE, nr, type) | 210 | #define AMDKFD_IOR(nr, type) _IOR(AMDKFD_IOCTL_BASE, nr, type) |
| @@ -155,7 +232,22 @@ struct kfd_ioctl_get_process_apertures_args { | |||
| 155 | #define AMDKFD_IOC_UPDATE_QUEUE \ | 232 | #define AMDKFD_IOC_UPDATE_QUEUE \ |
| 156 | AMDKFD_IOW(0x07, struct kfd_ioctl_update_queue_args) | 233 | AMDKFD_IOW(0x07, struct kfd_ioctl_update_queue_args) |
| 157 | 234 | ||
| 235 | #define AMDKFD_IOC_CREATE_EVENT \ | ||
| 236 | AMDKFD_IOWR(0x08, struct kfd_ioctl_create_event_args) | ||
| 237 | |||
| 238 | #define AMDKFD_IOC_DESTROY_EVENT \ | ||
| 239 | AMDKFD_IOW(0x09, struct kfd_ioctl_destroy_event_args) | ||
| 240 | |||
| 241 | #define AMDKFD_IOC_SET_EVENT \ | ||
| 242 | AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args) | ||
| 243 | |||
| 244 | #define AMDKFD_IOC_RESET_EVENT \ | ||
| 245 | AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args) | ||
| 246 | |||
| 247 | #define AMDKFD_IOC_WAIT_EVENTS \ | ||
| 248 | AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args) | ||
| 249 | |||
| 158 | #define AMDKFD_COMMAND_START 0x01 | 250 | #define AMDKFD_COMMAND_START 0x01 |
| 159 | #define AMDKFD_COMMAND_END 0x08 | 251 | #define AMDKFD_COMMAND_END 0x0D |
| 160 | 252 | ||
| 161 | #endif | 253 | #endif |
