From aee31c54b48529865f078a01d3210b5cf66b2f89 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Thu, 24 May 2018 14:53:40 -0400 Subject: [PATCH 4621/5725] drm/amd: Update KFD-Thunk ioctl ABI to match upstream - Clean up and renumber scratch memory ioctl - Renumber get_tile_config ioctl - Renumber set_trap_handler ioctl - Update KFD_IOC_ALLOC_MEM_FLAGS - Renumber GPUVM memory management ioctls - Remove unused SEP_PROCESS_DGPU_APERTURE ioctl - Update memory management ioctls Replace device_ids_array_size (in bytes) with n_devices. Fix error handling and use n_success to update device_id arrays in objects. This commit breaks the ABI and requires a corresponding Thunk change. Change-Id: I62149841f1603ec36143836d2eb5ab0fcaf37cf5 Signed-off-by: Felix Kuehling Signed-off-by: Kalyan Alle --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 133 ++++++++--------------- drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c | 10 -- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 - drivers/gpu/drm/amd/amdkfd/kfd_process.c | 11 +- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 24 ++-- include/uapi/linux/kfd_ioctl.h | 91 ++++++++-------- 7 files changed, 116 insertions(+), 159 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index d43473e..85d0bfb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1246,9 +1246,9 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( VI_BO_SIZE_ALIGN : 1; mapping_flags = AMDGPU_VM_PAGE_READABLE; - if (!(flags & ALLOC_MEM_FLAGS_READONLY)) + if (flags & ALLOC_MEM_FLAGS_WRITABLE) mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; - if (flags & ALLOC_MEM_FLAGS_EXECUTE_ACCESS) + if (flags & ALLOC_MEM_FLAGS_EXECUTABLE) mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; if (flags & ALLOC_MEM_FLAGS_COHERENT) mapping_flags |= AMDGPU_VM_MTYPE_UC; diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 01a253c..0eab007 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -1085,17 +1085,14 @@ static int kfd_ioctl_wait_events(struct file *filp, struct kfd_process *p, return err; } -static int kfd_ioctl_alloc_scratch_memory(struct file *filep, +static int kfd_ioctl_set_scratch_backing_va(struct file *filep, struct kfd_process *p, void *data) { - struct kfd_ioctl_alloc_memory_of_scratch_args *args = data; + struct kfd_ioctl_set_scratch_backing_va_args *args = data; struct kfd_process_device *pdd; struct kfd_dev *dev; long err; - if (args->size == 0) - return -EINVAL; - dev = kfd_device_by_id(args->gpu_id); if (!dev) return -EINVAL; @@ -1383,31 +1380,30 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, void *mem; struct kfd_dev *dev, *peer; long err = 0; - int i, num_dev = 0; + int i; uint32_t *devices_arr = NULL; dev = kfd_device_by_id(GET_GPU_ID(args->handle)); if (!dev) return -EINVAL; - if (args->device_ids_array_size == 0) { - pr_debug("Device ID array size is 0\n"); + if (!args->n_devices) { + pr_debug("Device IDs array empty\n"); return -EINVAL; } - - if (args->device_ids_array_size % sizeof(uint32_t)) { - pr_debug("Node IDs array size %u\n", - args->device_ids_array_size); + if (args->n_success > args->n_devices) { + pr_debug("n_success exceeds n_devices\n"); return -EINVAL; } - devices_arr = kmalloc(args->device_ids_array_size, GFP_KERNEL); + devices_arr = kmalloc_array(args->n_devices, sizeof(*devices_arr), + GFP_KERNEL); if (!devices_arr) return -ENOMEM; err = copy_from_user(devices_arr, - (void __user *)args->device_ids_array_ptr, - args->device_ids_array_size); + (void __user *)args->device_ids_array_ptr, + args->n_devices * sizeof(*devices_arr)); if (err != 0) { err = -EFAULT; goto copy_from_user_failed; @@ -1428,12 +1424,11 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, goto get_mem_obj_from_handle_failed; } - num_dev = args->device_ids_array_size / sizeof(uint32_t); - for (i = 0 ; i < num_dev; i++) { + for (i = args->n_success; i < args->n_devices; i++) { peer = kfd_device_by_id(devices_arr[i]); if (!peer) { pr_debug("Getting device by id failed for 0x%x\n", - devices_arr[i]); + devices_arr[i]); err = -EINVAL; goto get_mem_obj_from_handle_failed; } @@ -1444,12 +1439,13 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, goto get_mem_obj_from_handle_failed; } err = peer->kfd2kgd->map_memory_to_gpu( - peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); - if (err != 0) { - pr_err("Failed to map to gpu %d, num_dev=%d\n", - i, num_dev); + peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); + if (err) { + pr_err("Failed to map to gpu %d/%d\n", + i, args->n_devices); goto map_memory_to_gpu_failed; } + args->n_success = i+1; } mutex_unlock(&p->mutex); @@ -1461,7 +1457,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, } /* Flush TLBs after waiting for the page table updates to complete */ - for (i = 0; i < num_dev; i++) { + for (i = 0; i < args->n_devices; i++) { peer = kfd_device_by_id(devices_arr[i]); if (WARN_ON_ONCE(!peer)) continue; @@ -1494,30 +1490,29 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, void *mem; struct kfd_dev *dev, *peer; long err = 0; - uint32_t *devices_arr = NULL, num_dev, i; + uint32_t *devices_arr = NULL, i; dev = kfd_device_by_id(GET_GPU_ID(args->handle)); if (!dev) return -EINVAL; - if (args->device_ids_array_size == 0) { - pr_debug("Device ID array size is 0\n"); + if (!args->n_devices) { + pr_debug("Device IDs array empty\n"); return -EINVAL; } - - if (args->device_ids_array_size % sizeof(uint32_t)) { - pr_debug("Node IDs array size %u\n", - args->device_ids_array_size); + if (args->n_success > args->n_devices) { + pr_debug("n_success exceeds n_devices\n"); return -EINVAL; } - devices_arr = kmalloc(args->device_ids_array_size, GFP_KERNEL); + devices_arr = kmalloc_array(args->n_devices, sizeof(*devices_arr), + GFP_KERNEL); if (!devices_arr) return -ENOMEM; err = copy_from_user(devices_arr, - (void __user *)args->device_ids_array_ptr, - args->device_ids_array_size); + (void __user *)args->device_ids_array_ptr, + args->n_devices * sizeof(*devices_arr)); if (err != 0) { err = -EFAULT; goto copy_from_user_failed; @@ -1527,8 +1522,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, pdd = kfd_get_process_device_data(dev, p); if (!pdd) { - pr_debug("Process device data doesn't exist\n"); - err = -ENODEV; + err = -EINVAL; goto bind_process_to_device_failed; } @@ -1539,8 +1533,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, goto get_mem_obj_from_handle_failed; } - num_dev = args->device_ids_array_size / sizeof(uint32_t); - for (i = 0 ; i < num_dev; i++) { + for (i = args->n_success; i < args->n_devices; i++) { peer = kfd_device_by_id(devices_arr[i]); if (!peer) { err = -EINVAL; @@ -1556,9 +1549,10 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); if (err) { pr_err("Failed to unmap from gpu %d/%d\n", - i, num_dev); + i, args->n_devices); goto unmap_memory_from_gpu_failed; } + args->n_success = i+1; } kfree(devices_arr); @@ -1575,34 +1569,6 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, return err; } -static int kfd_ioctl_set_process_dgpu_aperture(struct file *filep, - struct kfd_process *p, void *data) -{ - struct kfd_ioctl_set_process_dgpu_aperture_args *args = data; - struct kfd_dev *dev; - struct kfd_process_device *pdd; - long err; - - dev = kfd_device_by_id(args->gpu_id); - if (!dev) - return -EINVAL; - - mutex_lock(&p->mutex); - - pdd = kfd_bind_process_to_device(dev, p); - if (IS_ERR(pdd)) { - err = PTR_ERR(pdd); - goto exit; - } - - err = kfd_set_process_dgpu_aperture(pdd, args->dgpu_base, - args->dgpu_limit); - -exit: - mutex_unlock(&p->mutex); - return err; -} - static int kfd_ioctl_get_dmabuf_info(struct file *filep, struct kfd_process *p, void *data) { @@ -1894,7 +1860,7 @@ static int kfd_create_cma_system_bo(struct kfd_dev *kdev, struct kfd_bo *bo, uint64_t bo_size = 0; struct dma_fence *f; - uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_NONPAGED | + uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_WRITABLE | ALLOC_MEM_FLAGS_NO_SUBSTITUTE; *cma_bo = NULL; @@ -2564,6 +2530,21 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = { AMDKFD_IOCTL_DEF(AMDKFD_IOC_DBG_WAVE_CONTROL, kfd_ioctl_dbg_wave_control, 0), + AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_SCRATCH_BACKING_VA, + kfd_ioctl_set_scratch_backing_va, 0), + + AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_TILE_CONFIG, + kfd_ioctl_get_tile_config, 0), + + AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_TRAP_HANDLER, + kfd_ioctl_set_trap_handler, 0), + + AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_PROCESS_APERTURES_NEW, + kfd_ioctl_get_process_apertures_new, 0), + + AMDKFD_IOCTL_DEF(AMDKFD_IOC_ACQUIRE_VM, + kfd_ioctl_acquire_vm, 0), + AMDKFD_IOCTL_DEF(AMDKFD_IOC_ALLOC_MEMORY_OF_GPU, kfd_ioctl_alloc_memory_of_gpu, 0), @@ -2576,30 +2557,15 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = { AMDKFD_IOCTL_DEF(AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU, kfd_ioctl_unmap_memory_from_gpu, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_ALLOC_MEMORY_OF_SCRATCH, - kfd_ioctl_alloc_scratch_memory, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_CU_MASK, kfd_ioctl_set_cu_mask, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_PROCESS_DGPU_APERTURE, - kfd_ioctl_set_process_dgpu_aperture, 0), - - AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_TRAP_HANDLER, - kfd_ioctl_set_trap_handler, 0), - - AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_PROCESS_APERTURES_NEW, - kfd_ioctl_get_process_apertures_new, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_DMABUF_INFO, kfd_ioctl_get_dmabuf_info, 0), AMDKFD_IOCTL_DEF(AMDKFD_IOC_IMPORT_DMABUF, kfd_ioctl_import_dmabuf, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_TILE_CONFIG, - kfd_ioctl_get_tile_config, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_IPC_IMPORT_HANDLE, kfd_ioctl_ipc_import_handle, 0), @@ -2612,9 +2578,6 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = { AMDKFD_IOCTL_DEF(AMDKFD_IOC_GET_QUEUE_WAVE_STATE, kfd_ioctl_get_queue_wave_state, 0), - AMDKFD_IOCTL_DEF(AMDKFD_IOC_ACQUIRE_VM, - kfd_ioctl_acquire_vm, 0) - }; #define AMDKFD_CORE_IOCTL_COUNT ARRAY_SIZE(amdkfd_ioctls) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c index 0cae2e9..f7de732 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c @@ -312,16 +312,6 @@ #define SVM_CWSR_BASE (SVM_USER_BASE - KFD_CWSR_TBA_TMA_SIZE) #define SVM_IB_BASE (SVM_CWSR_BASE - PAGE_SIZE) -int kfd_set_process_dgpu_aperture(struct kfd_process_device *pdd, - uint64_t base, uint64_t limit) -{ - if (base < SVM_USER_BASE) { - pr_err("Set dgpu vm base 0x%llx failed.\n", base); - return -EINVAL; - } - return 0; -} - static void kfd_init_apertures_vi(struct kfd_process_device *pdd, uint8_t id) { /* diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h index c63a6b0..7bb56e2 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@ -918,8 +918,6 @@ int kgd2kfd_post_reset(struct kfd_dev *kfd); /* amdkfd Apertures */ int kfd_init_apertures(struct kfd_process *process); -int kfd_set_process_dgpu_aperture(struct kfd_process_device *pdd, - uint64_t base, uint64_t limit); /* Queue Context Management */ int init_queue(struct queue **q, const struct queue_properties *properties); diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index 9477e50..e79479b 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -191,8 +191,10 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd, static int kfd_process_device_reserve_ib_mem(struct kfd_process_device *pdd) { struct qcm_process_device *qpd = &pdd->qpd; - uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_NONPAGED | - ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ALLOC_MEM_FLAGS_EXECUTE_ACCESS; + uint32_t flags = ALLOC_MEM_FLAGS_GTT | + ALLOC_MEM_FLAGS_NO_SUBSTITUTE | + ALLOC_MEM_FLAGS_WRITABLE | + ALLOC_MEM_FLAGS_EXECUTABLE; void *kaddr; int ret; @@ -512,9 +514,8 @@ static int kfd_process_device_init_cwsr_dgpu(struct kfd_process_device *pdd) { struct kfd_dev *dev = pdd->dev; struct qcm_process_device *qpd = &pdd->qpd; - uint32_t flags = ALLOC_MEM_FLAGS_GTT | ALLOC_MEM_FLAGS_NONPAGED | - ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ALLOC_MEM_FLAGS_READONLY | - ALLOC_MEM_FLAGS_EXECUTE_ACCESS; + uint32_t flags = ALLOC_MEM_FLAGS_GTT | + ALLOC_MEM_FLAGS_NO_SUBSTITUTE | ALLOC_MEM_FLAGS_EXECUTABLE; void *kaddr; int ret; diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h index d26bba5..fabcf1ef 100644 --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@ -156,24 +156,26 @@ struct tile_config { uint32_t num_ranks; }; + /* - * Allocation flag domains currently only VRAM and GTT domain supported + * Allocation flag domains + * NOTE: This must match the corresponding definitions in kfd_ioctl.h. */ -#define ALLOC_MEM_FLAGS_VRAM (1 << 0) -#define ALLOC_MEM_FLAGS_GTT (1 << 1) -#define ALLOC_MEM_FLAGS_USERPTR (1 << 2) -#define ALLOC_MEM_FLAGS_DOORBELL (1 << 3) +#define ALLOC_MEM_FLAGS_VRAM (1 << 0) +#define ALLOC_MEM_FLAGS_GTT (1 << 1) +#define ALLOC_MEM_FLAGS_USERPTR (1 << 2) +#define ALLOC_MEM_FLAGS_DOORBELL (1 << 3) /* * Allocation flags attributes/access options. + * NOTE: This must match the corresponding definitions in kfd_ioctl.h. */ -#define ALLOC_MEM_FLAGS_NONPAGED (1 << 31) -#define ALLOC_MEM_FLAGS_READONLY (1 << 30) -#define ALLOC_MEM_FLAGS_PUBLIC (1 << 29) -#define ALLOC_MEM_FLAGS_NO_SUBSTITUTE (1 << 28) +#define ALLOC_MEM_FLAGS_WRITABLE (1 << 31) +#define ALLOC_MEM_FLAGS_EXECUTABLE (1 << 30) +#define ALLOC_MEM_FLAGS_PUBLIC (1 << 29) +#define ALLOC_MEM_FLAGS_NO_SUBSTITUTE (1 << 28) /* TODO */ #define ALLOC_MEM_FLAGS_AQL_QUEUE_MEM (1 << 27) -#define ALLOC_MEM_FLAGS_EXECUTE_ACCESS (1 << 26) -#define ALLOC_MEM_FLAGS_COHERENT (1 << 25) +#define ALLOC_MEM_FLAGS_COHERENT (1 << 26) /* For GFXv9 or later */ /** * struct kfd2kgd_calls diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h index 85d833e..7a6bb85 100644 --- a/include/uapi/linux/kfd_ioctl.h +++ b/include/uapi/linux/kfd_ioctl.h @@ -279,6 +279,12 @@ struct kfd_ioctl_wait_events_args { uint32_t wait_result; /* from KFD */ }; +struct kfd_ioctl_set_scratch_backing_va_args { + __u64 va_addr; /* to KFD */ + __u32 gpu_id; /* to KFD */ + __u32 pad; +}; + struct kfd_ioctl_alloc_memory_of_scratch_args { uint64_t va_addr; /* to KFD */ uint64_t size; /* to KFD */ @@ -321,15 +327,15 @@ struct kfd_ioctl_free_memory_of_gpu_args { struct kfd_ioctl_map_memory_to_gpu_args { uint64_t handle; /* to KFD */ uint64_t device_ids_array_ptr; /* to KFD */ - uint32_t device_ids_array_size; /* to KFD */ - uint32_t pad; + uint32_t n_devices; /* to KFD */ + uint32_t n_success; /* to/from KFD */ }; struct kfd_ioctl_unmap_memory_from_gpu_args { uint64_t handle; /* to KFD */ uint64_t device_ids_array_ptr; /* to KFD */ - uint32_t device_ids_array_size; /* to KFD */ - uint32_t pad; + uint32_t n_devices; /* to KFD */ + uint32_t n_success; /* to/from KFD */ }; struct kfd_ioctl_set_process_dgpu_aperture_args { @@ -478,62 +484,59 @@ struct kfd_ioctl_cross_memory_copy_args { #define AMDKFD_IOC_DBG_ADDRESS_WATCH \ AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args) -#define AMDKFD_IOC_DBG_WAVE_CONTROL \ - AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args) - -#define AMDKFD_IOC_ALLOC_MEMORY_OF_GPU \ - AMDKFD_IOWR(0x11, struct kfd_ioctl_alloc_memory_of_gpu_args) +#define AMDKFD_IOC_DBG_WAVE_CONTROL \ + AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args) -#define AMDKFD_IOC_FREE_MEMORY_OF_GPU \ - AMDKFD_IOWR(0x12, struct kfd_ioctl_free_memory_of_gpu_args) +#define AMDKFD_IOC_SET_SCRATCH_BACKING_VA \ + AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args) -#define AMDKFD_IOC_MAP_MEMORY_TO_GPU \ - AMDKFD_IOWR(0x13, struct kfd_ioctl_map_memory_to_gpu_args) +#define AMDKFD_IOC_GET_TILE_CONFIG \ + AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args) -#define AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU \ - AMDKFD_IOWR(0x14, struct kfd_ioctl_unmap_memory_from_gpu_args) +#define AMDKFD_IOC_SET_TRAP_HANDLER \ + AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args) -#define AMDKFD_IOC_ALLOC_MEMORY_OF_SCRATCH \ - AMDKFD_IOWR(0x15, struct kfd_ioctl_alloc_memory_of_scratch_args) +#define AMDKFD_IOC_GET_PROCESS_APERTURES_NEW \ + AMDKFD_IOWR(0x14, \ + struct kfd_ioctl_get_process_apertures_new_args) -#define AMDKFD_IOC_SET_CU_MASK \ - AMDKFD_IOW(0x16, struct kfd_ioctl_set_cu_mask_args) +#define AMDKFD_IOC_ACQUIRE_VM \ + AMDKFD_IOW(0x15, struct kfd_ioctl_acquire_vm_args) -#define AMDKFD_IOC_SET_PROCESS_DGPU_APERTURE \ - AMDKFD_IOW(0x17, \ - struct kfd_ioctl_set_process_dgpu_aperture_args) +#define AMDKFD_IOC_ALLOC_MEMORY_OF_GPU \ + AMDKFD_IOWR(0x16, struct kfd_ioctl_alloc_memory_of_gpu_args) -#define AMDKFD_IOC_SET_TRAP_HANDLER \ - AMDKFD_IOW(0x18, struct kfd_ioctl_set_trap_handler_args) +#define AMDKFD_IOC_FREE_MEMORY_OF_GPU \ + AMDKFD_IOW(0x17, struct kfd_ioctl_free_memory_of_gpu_args) -#define AMDKFD_IOC_GET_PROCESS_APERTURES_NEW \ - AMDKFD_IOWR(0x19, struct kfd_ioctl_get_process_apertures_new_args) +#define AMDKFD_IOC_MAP_MEMORY_TO_GPU \ + AMDKFD_IOWR(0x18, struct kfd_ioctl_map_memory_to_gpu_args) -#define AMDKFD_IOC_GET_DMABUF_INFO \ - AMDKFD_IOWR(0x1A, struct kfd_ioctl_get_dmabuf_info_args) +#define AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU \ + AMDKFD_IOWR(0x19, struct kfd_ioctl_unmap_memory_from_gpu_args) -#define AMDKFD_IOC_IMPORT_DMABUF \ - AMDKFD_IOWR(0x1B, struct kfd_ioctl_import_dmabuf_args) +#define AMDKFD_IOC_SET_CU_MASK \ + AMDKFD_IOW(0x1A, struct kfd_ioctl_set_cu_mask_args) -#define AMDKFD_IOC_GET_TILE_CONFIG \ - AMDKFD_IOWR(0x1C, struct kfd_ioctl_get_tile_config_args) +#define AMDKFD_IOC_GET_QUEUE_WAVE_STATE \ + AMDKFD_IOWR(0x1B, struct kfd_ioctl_get_queue_wave_state_args) -#define AMDKFD_IOC_IPC_IMPORT_HANDLE \ - AMDKFD_IOWR(0x1D, struct kfd_ioctl_ipc_import_handle_args) +#define AMDKFD_IOC_GET_DMABUF_INFO \ + AMDKFD_IOWR(0x1C, struct kfd_ioctl_get_dmabuf_info_args) -#define AMDKFD_IOC_IPC_EXPORT_HANDLE \ - AMDKFD_IOWR(0x1E, struct kfd_ioctl_ipc_export_handle_args) +#define AMDKFD_IOC_IMPORT_DMABUF \ + AMDKFD_IOWR(0x1D, struct kfd_ioctl_import_dmabuf_args) -#define AMDKFD_IOC_CROSS_MEMORY_COPY \ - AMDKFD_IOWR(0x1F, struct kfd_ioctl_cross_memory_copy_args) +#define AMDKFD_IOC_IPC_IMPORT_HANDLE \ + AMDKFD_IOWR(0x1E, struct kfd_ioctl_ipc_import_handle_args) -#define AMDKFD_IOC_GET_QUEUE_WAVE_STATE \ - AMDKFD_IOWR(0x20, struct kfd_ioctl_get_queue_wave_state_args) +#define AMDKFD_IOC_IPC_EXPORT_HANDLE \ + AMDKFD_IOWR(0x1F, struct kfd_ioctl_ipc_export_handle_args) -#define AMDKFD_IOC_ACQUIRE_VM \ - AMDKFD_IOW(0x21, struct kfd_ioctl_acquire_vm_args) +#define AMDKFD_IOC_CROSS_MEMORY_COPY \ + AMDKFD_IOWR(0x20, struct kfd_ioctl_cross_memory_copy_args) -#define AMDKFD_COMMAND_START 0x01 -#define AMDKFD_COMMAND_END 0x22 +#define AMDKFD_COMMAND_START 0x01 +#define AMDKFD_COMMAND_END 0x21 #endif -- 2.7.4