Lines Matching refs:args
160 struct kfd_ioctl_get_version_args *args = data; in kfd_ioctl_get_version() local
162 args->major_version = KFD_IOCTL_MAJOR_VERSION; in kfd_ioctl_get_version()
163 args->minor_version = KFD_IOCTL_MINOR_VERSION; in kfd_ioctl_get_version()
169 struct kfd_ioctl_create_queue_args *args) in set_queue_properties_from_user() argument
171 if (args->queue_percentage > KFD_MAX_QUEUE_PERCENTAGE) { in set_queue_properties_from_user()
176 if (args->queue_priority > KFD_MAX_QUEUE_PRIORITY) { in set_queue_properties_from_user()
181 if ((args->ring_base_address) && in set_queue_properties_from_user()
182 (!access_ok((const void __user *) args->ring_base_address, in set_queue_properties_from_user()
188 if (!is_power_of_2(args->ring_size) && (args->ring_size != 0)) { in set_queue_properties_from_user()
193 if (!access_ok((const void __user *) args->read_pointer_address, in set_queue_properties_from_user()
199 if (!access_ok((const void __user *) args->write_pointer_address, in set_queue_properties_from_user()
205 if (args->eop_buffer_address && in set_queue_properties_from_user()
206 !access_ok((const void __user *) args->eop_buffer_address, in set_queue_properties_from_user()
212 if (args->ctx_save_restore_address && in set_queue_properties_from_user()
213 !access_ok((const void __user *) args->ctx_save_restore_address, in set_queue_properties_from_user()
221 q_properties->queue_percent = args->queue_percentage; in set_queue_properties_from_user()
222 q_properties->priority = args->queue_priority; in set_queue_properties_from_user()
223 q_properties->queue_address = args->ring_base_address; in set_queue_properties_from_user()
224 q_properties->queue_size = args->ring_size; in set_queue_properties_from_user()
225 q_properties->read_ptr = (uint32_t *) args->read_pointer_address; in set_queue_properties_from_user()
226 q_properties->write_ptr = (uint32_t *) args->write_pointer_address; in set_queue_properties_from_user()
227 q_properties->eop_ring_buffer_address = args->eop_buffer_address; in set_queue_properties_from_user()
228 q_properties->eop_ring_buffer_size = args->eop_buffer_size; in set_queue_properties_from_user()
230 args->ctx_save_restore_address; in set_queue_properties_from_user()
231 q_properties->ctx_save_restore_area_size = args->ctx_save_restore_size; in set_queue_properties_from_user()
232 q_properties->ctl_stack_size = args->ctl_stack_size; in set_queue_properties_from_user()
233 if (args->queue_type == KFD_IOC_QUEUE_TYPE_COMPUTE || in set_queue_properties_from_user()
234 args->queue_type == KFD_IOC_QUEUE_TYPE_COMPUTE_AQL) in set_queue_properties_from_user()
236 else if (args->queue_type == KFD_IOC_QUEUE_TYPE_SDMA) in set_queue_properties_from_user()
238 else if (args->queue_type == KFD_IOC_QUEUE_TYPE_SDMA_XGMI) in set_queue_properties_from_user()
243 if (args->queue_type == KFD_IOC_QUEUE_TYPE_COMPUTE_AQL) in set_queue_properties_from_user()
249 q_properties->queue_percent, args->queue_percentage); in set_queue_properties_from_user()
252 q_properties->priority, args->queue_priority); in set_queue_properties_from_user()
255 q_properties->queue_address, args->ring_base_address); in set_queue_properties_from_user()
258 q_properties->queue_size, args->ring_size); in set_queue_properties_from_user()
277 struct kfd_ioctl_create_queue_args *args = data; in kfd_ioctl_create_queue() local
289 err = set_queue_properties_from_user(&q_properties, args); in kfd_ioctl_create_queue()
293 pr_debug("Looking for gpu id 0x%x\n", args->gpu_id); in kfd_ioctl_create_queue()
294 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_create_queue()
296 pr_debug("Could not find gpu id 0x%x\n", args->gpu_id); in kfd_ioctl_create_queue()
317 args->queue_id = queue_id; in kfd_ioctl_create_queue()
321 args->doorbell_offset = KFD_MMAP_TYPE_DOORBELL; in kfd_ioctl_create_queue()
322 args->doorbell_offset |= KFD_MMAP_GPU_ID(args->gpu_id); in kfd_ioctl_create_queue()
327 args->doorbell_offset |= doorbell_offset_in_process; in kfd_ioctl_create_queue()
331 pr_debug("Queue id %d was created successfully\n", args->queue_id); in kfd_ioctl_create_queue()
334 args->ring_base_address); in kfd_ioctl_create_queue()
337 args->read_pointer_address); in kfd_ioctl_create_queue()
340 args->write_pointer_address); in kfd_ioctl_create_queue()
354 struct kfd_ioctl_destroy_queue_args *args = data; in kfd_ioctl_destroy_queue() local
357 args->queue_id, in kfd_ioctl_destroy_queue()
362 retval = pqm_destroy_queue(&p->pqm, args->queue_id); in kfd_ioctl_destroy_queue()
372 struct kfd_ioctl_update_queue_args *args = data; in kfd_ioctl_update_queue() local
375 if (args->queue_percentage > KFD_MAX_QUEUE_PERCENTAGE) { in kfd_ioctl_update_queue()
380 if (args->queue_priority > KFD_MAX_QUEUE_PRIORITY) { in kfd_ioctl_update_queue()
385 if ((args->ring_base_address) && in kfd_ioctl_update_queue()
386 (!access_ok((const void __user *) args->ring_base_address, in kfd_ioctl_update_queue()
392 if (!is_power_of_2(args->ring_size) && (args->ring_size != 0)) { in kfd_ioctl_update_queue()
397 properties.queue_address = args->ring_base_address; in kfd_ioctl_update_queue()
398 properties.queue_size = args->ring_size; in kfd_ioctl_update_queue()
399 properties.queue_percent = args->queue_percentage; in kfd_ioctl_update_queue()
400 properties.priority = args->queue_priority; in kfd_ioctl_update_queue()
403 args->queue_id, p->pasid); in kfd_ioctl_update_queue()
407 retval = pqm_update_queue(&p->pqm, args->queue_id, &properties); in kfd_ioctl_update_queue()
419 struct kfd_ioctl_set_cu_mask_args *args = data; in kfd_ioctl_set_cu_mask() local
421 uint32_t __user *cu_mask_ptr = (uint32_t __user *)args->cu_mask_ptr; in kfd_ioctl_set_cu_mask()
422 size_t cu_mask_size = sizeof(uint32_t) * (args->num_cu_mask / 32); in kfd_ioctl_set_cu_mask()
424 if ((args->num_cu_mask % 32) != 0) { in kfd_ioctl_set_cu_mask()
426 args->num_cu_mask); in kfd_ioctl_set_cu_mask()
430 properties.cu_mask_count = args->num_cu_mask; in kfd_ioctl_set_cu_mask()
459 retval = pqm_set_cu_mask(&p->pqm, args->queue_id, &properties); in kfd_ioctl_set_cu_mask()
472 struct kfd_ioctl_get_queue_wave_state_args *args = data; in kfd_ioctl_get_queue_wave_state() local
477 r = pqm_get_wave_state(&p->pqm, args->queue_id, in kfd_ioctl_get_queue_wave_state()
478 (void __user *)args->ctl_stack_address, in kfd_ioctl_get_queue_wave_state()
479 &args->ctl_stack_used_size, in kfd_ioctl_get_queue_wave_state()
480 &args->save_area_used_size); in kfd_ioctl_get_queue_wave_state()
490 struct kfd_ioctl_set_memory_policy_args *args = data; in kfd_ioctl_set_memory_policy() local
496 if (args->default_policy != KFD_IOC_CACHE_POLICY_COHERENT in kfd_ioctl_set_memory_policy()
497 && args->default_policy != KFD_IOC_CACHE_POLICY_NONCOHERENT) { in kfd_ioctl_set_memory_policy()
501 if (args->alternate_policy != KFD_IOC_CACHE_POLICY_COHERENT in kfd_ioctl_set_memory_policy()
502 && args->alternate_policy != KFD_IOC_CACHE_POLICY_NONCOHERENT) { in kfd_ioctl_set_memory_policy()
506 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_set_memory_policy()
518 default_policy = (args->default_policy == KFD_IOC_CACHE_POLICY_COHERENT) in kfd_ioctl_set_memory_policy()
522 (args->alternate_policy == KFD_IOC_CACHE_POLICY_COHERENT) in kfd_ioctl_set_memory_policy()
529 (void __user *)args->alternate_aperture_base, in kfd_ioctl_set_memory_policy()
530 args->alternate_aperture_size)) in kfd_ioctl_set_memory_policy()
542 struct kfd_ioctl_set_trap_handler_args *args = data; in kfd_ioctl_set_trap_handler() local
547 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_set_trap_handler()
561 args->tba_addr, in kfd_ioctl_set_trap_handler()
562 args->tma_addr)) in kfd_ioctl_set_trap_handler()
574 struct kfd_ioctl_dbg_register_args *args = data; in kfd_ioctl_dbg_register() local
581 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_dbg_register()
628 struct kfd_ioctl_dbg_unregister_args *args = data; in kfd_ioctl_dbg_unregister() local
632 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_dbg_unregister()
666 struct kfd_ioctl_dbg_address_watch_args *args = data; in kfd_ioctl_dbg_address_watch() local
677 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_dbg_address_watch()
686 cmd_from_user = (void __user *) args->content_ptr; in kfd_ioctl_dbg_address_watch()
690 if ((args->buf_size_in_bytes > MAX_ALLOWED_AW_BUFF_SIZE) || in kfd_ioctl_dbg_address_watch()
691 (args->buf_size_in_bytes <= sizeof(*args) + sizeof(int) * 2) || in kfd_ioctl_dbg_address_watch()
697 args->buf_size_in_bytes - sizeof(*args)); in kfd_ioctl_dbg_address_watch()
718 if (args_idx >= args->buf_size_in_bytes - sizeof(*args)) { in kfd_ioctl_dbg_address_watch()
742 if (args_idx >= args->buf_size_in_bytes - sizeof(args)) { in kfd_ioctl_dbg_address_watch()
766 struct kfd_ioctl_dbg_wave_control_args *args = data; in kfd_ioctl_dbg_wave_control() local
778 computed_buff_size = sizeof(*args) + in kfd_ioctl_dbg_wave_control()
785 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_dbg_wave_control()
795 if (args->buf_size_in_bytes != computed_buff_size) { in kfd_ioctl_dbg_wave_control()
797 args->buf_size_in_bytes, computed_buff_size); in kfd_ioctl_dbg_wave_control()
801 cmd_from_user = (void __user *) args->content_ptr; in kfd_ioctl_dbg_wave_control()
809 args->buf_size_in_bytes - sizeof(*args)); in kfd_ioctl_dbg_wave_control()
850 struct kfd_ioctl_get_clock_counters_args *args = data; in kfd_ioctl_get_clock_counters() local
853 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_get_clock_counters()
856 args->gpu_clock_counter = amdgpu_amdkfd_get_gpu_clock_counter(dev->kgd); in kfd_ioctl_get_clock_counters()
859 args->gpu_clock_counter = 0; in kfd_ioctl_get_clock_counters()
862 args->cpu_clock_counter = ktime_get_raw_ns(); in kfd_ioctl_get_clock_counters()
863 args->system_clock_counter = ktime_get_boottime_ns(); in kfd_ioctl_get_clock_counters()
866 args->system_clock_freq = 1000000000; in kfd_ioctl_get_clock_counters()
875 struct kfd_ioctl_get_process_apertures_args *args = data; in kfd_ioctl_get_process_apertures() local
881 args->num_of_nodes = 0; in kfd_ioctl_get_process_apertures()
891 &args->process_apertures[args->num_of_nodes]; in kfd_ioctl_get_process_apertures()
901 "node id %u\n", args->num_of_nodes); in kfd_ioctl_get_process_apertures()
917 args->num_of_nodes++; in kfd_ioctl_get_process_apertures()
920 } while (pdd && (args->num_of_nodes < NUM_OF_SUPPORTED_GPUS)); in kfd_ioctl_get_process_apertures()
931 struct kfd_ioctl_get_process_apertures_new_args *args = data; in kfd_ioctl_get_process_apertures_new() local
939 if (args->num_of_nodes == 0) { in kfd_ioctl_get_process_apertures_new()
951 args->num_of_nodes++; in kfd_ioctl_get_process_apertures_new()
963 args->num_of_nodes), GFP_KERNEL); in kfd_ioctl_get_process_apertures_new()
970 args->num_of_nodes = 0; in kfd_ioctl_get_process_apertures_new()
1003 } while (pdd && (nodes < args->num_of_nodes)); in kfd_ioctl_get_process_apertures_new()
1006 args->num_of_nodes = nodes; in kfd_ioctl_get_process_apertures_new()
1008 (void __user *)args->kfd_process_device_apertures_ptr, in kfd_ioctl_get_process_apertures_new()
1022 struct kfd_ioctl_create_event_args *args = data; in kfd_ioctl_create_event() local
1029 if (args->event_page_offset) { in kfd_ioctl_create_event()
1040 kfd = kfd_device_by_id(GET_GPU_ID(args->event_page_offset)); in kfd_ioctl_create_event()
1054 GET_IDR_HANDLE(args->event_page_offset)); in kfd_ioctl_create_event()
1057 args->event_page_offset); in kfd_ioctl_create_event()
1077 err = kfd_event_create(filp, p, args->event_type, in kfd_ioctl_create_event()
1078 args->auto_reset != 0, args->node_id, in kfd_ioctl_create_event()
1079 &args->event_id, &args->event_trigger_data, in kfd_ioctl_create_event()
1080 &args->event_page_offset, in kfd_ioctl_create_event()
1081 &args->event_slot_index); in kfd_ioctl_create_event()
1093 struct kfd_ioctl_destroy_event_args *args = data; in kfd_ioctl_destroy_event() local
1095 return kfd_event_destroy(p, args->event_id); in kfd_ioctl_destroy_event()
1101 struct kfd_ioctl_set_event_args *args = data; in kfd_ioctl_set_event() local
1103 return kfd_set_event(p, args->event_id); in kfd_ioctl_set_event()
1109 struct kfd_ioctl_reset_event_args *args = data; in kfd_ioctl_reset_event() local
1111 return kfd_reset_event(p, args->event_id); in kfd_ioctl_reset_event()
1117 struct kfd_ioctl_wait_events_args *args = data; in kfd_ioctl_wait_events() local
1120 err = kfd_wait_on_events(p, args->num_events, in kfd_ioctl_wait_events()
1121 (void __user *)args->events_ptr, in kfd_ioctl_wait_events()
1122 (args->wait_for_all != 0), in kfd_ioctl_wait_events()
1123 args->timeout, &args->wait_result); in kfd_ioctl_wait_events()
1130 struct kfd_ioctl_set_scratch_backing_va_args *args = data; in kfd_ioctl_set_scratch_backing_va() local
1135 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_set_scratch_backing_va()
1147 pdd->qpd.sh_hidden_private_base = args->va_addr; in kfd_ioctl_set_scratch_backing_va()
1154 dev->kgd, args->va_addr, pdd->qpd.vmid); in kfd_ioctl_set_scratch_backing_va()
1166 struct kfd_ioctl_get_tile_config_args *args = data; in kfd_ioctl_get_tile_config() local
1171 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_get_tile_config()
1177 args->gb_addr_config = config.gb_addr_config; in kfd_ioctl_get_tile_config()
1178 args->num_banks = config.num_banks; in kfd_ioctl_get_tile_config()
1179 args->num_ranks = config.num_ranks; in kfd_ioctl_get_tile_config()
1181 if (args->num_tile_configs > config.num_tile_configs) in kfd_ioctl_get_tile_config()
1182 args->num_tile_configs = config.num_tile_configs; in kfd_ioctl_get_tile_config()
1183 err = copy_to_user((void __user *)args->tile_config_ptr, in kfd_ioctl_get_tile_config()
1185 args->num_tile_configs * sizeof(uint32_t)); in kfd_ioctl_get_tile_config()
1187 args->num_tile_configs = 0; in kfd_ioctl_get_tile_config()
1191 if (args->num_macro_tile_configs > config.num_macro_tile_configs) in kfd_ioctl_get_tile_config()
1192 args->num_macro_tile_configs = in kfd_ioctl_get_tile_config()
1194 err = copy_to_user((void __user *)args->macro_tile_config_ptr, in kfd_ioctl_get_tile_config()
1196 args->num_macro_tile_configs * sizeof(uint32_t)); in kfd_ioctl_get_tile_config()
1198 args->num_macro_tile_configs = 0; in kfd_ioctl_get_tile_config()
1208 struct kfd_ioctl_acquire_vm_args *args = data; in kfd_ioctl_acquire_vm() local
1214 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_acquire_vm()
1218 drm_file = fget(args->drm_fd); in kfd_ioctl_acquire_vm()
1271 struct kfd_ioctl_alloc_memory_of_gpu_args *args = data; in kfd_ioctl_alloc_memory_of_gpu() local
1277 uint64_t offset = args->mmap_offset; in kfd_ioctl_alloc_memory_of_gpu()
1278 uint32_t flags = args->flags; in kfd_ioctl_alloc_memory_of_gpu()
1280 if (args->size == 0) in kfd_ioctl_alloc_memory_of_gpu()
1283 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_alloc_memory_of_gpu()
1303 if (args->size != kfd_doorbell_process_slice(dev)) { in kfd_ioctl_alloc_memory_of_gpu()
1309 if (args->size != PAGE_SIZE) { in kfd_ioctl_alloc_memory_of_gpu()
1321 dev->kgd, args->va_addr, args->size, in kfd_ioctl_alloc_memory_of_gpu()
1336 WRITE_ONCE(pdd->vram_usage, pdd->vram_usage + args->size); in kfd_ioctl_alloc_memory_of_gpu()
1340 args->handle = MAKE_HANDLE(args->gpu_id, idr_handle); in kfd_ioctl_alloc_memory_of_gpu()
1341 args->mmap_offset = offset; in kfd_ioctl_alloc_memory_of_gpu()
1347 args->mmap_offset = KFD_MMAP_TYPE_MMIO in kfd_ioctl_alloc_memory_of_gpu()
1348 | KFD_MMAP_GPU_ID(args->gpu_id); in kfd_ioctl_alloc_memory_of_gpu()
1362 struct kfd_ioctl_free_memory_of_gpu_args *args = data; in kfd_ioctl_free_memory_of_gpu() local
1369 dev = kfd_device_by_id(GET_GPU_ID(args->handle)); in kfd_ioctl_free_memory_of_gpu()
1383 pdd, GET_IDR_HANDLE(args->handle)); in kfd_ioctl_free_memory_of_gpu()
1397 pdd, GET_IDR_HANDLE(args->handle)); in kfd_ioctl_free_memory_of_gpu()
1409 struct kfd_ioctl_map_memory_to_gpu_args *args = data; in kfd_ioctl_map_memory_to_gpu() local
1417 dev = kfd_device_by_id(GET_GPU_ID(args->handle)); in kfd_ioctl_map_memory_to_gpu()
1421 if (!args->n_devices) { in kfd_ioctl_map_memory_to_gpu()
1425 if (args->n_success > args->n_devices) { in kfd_ioctl_map_memory_to_gpu()
1430 devices_arr = kmalloc_array(args->n_devices, sizeof(*devices_arr), in kfd_ioctl_map_memory_to_gpu()
1436 (void __user *)args->device_ids_array_ptr, in kfd_ioctl_map_memory_to_gpu()
1437 args->n_devices * sizeof(*devices_arr)); in kfd_ioctl_map_memory_to_gpu()
1452 GET_IDR_HANDLE(args->handle)); in kfd_ioctl_map_memory_to_gpu()
1458 for (i = args->n_success; i < args->n_devices; i++) { in kfd_ioctl_map_memory_to_gpu()
1476 i, args->n_devices); in kfd_ioctl_map_memory_to_gpu()
1479 args->n_success = i+1; in kfd_ioctl_map_memory_to_gpu()
1491 for (i = 0; i < args->n_devices; i++) { in kfd_ioctl_map_memory_to_gpu()
1519 struct kfd_ioctl_unmap_memory_from_gpu_args *args = data; in kfd_ioctl_unmap_memory_from_gpu() local
1526 dev = kfd_device_by_id(GET_GPU_ID(args->handle)); in kfd_ioctl_unmap_memory_from_gpu()
1530 if (!args->n_devices) { in kfd_ioctl_unmap_memory_from_gpu()
1534 if (args->n_success > args->n_devices) { in kfd_ioctl_unmap_memory_from_gpu()
1539 devices_arr = kmalloc_array(args->n_devices, sizeof(*devices_arr), in kfd_ioctl_unmap_memory_from_gpu()
1545 (void __user *)args->device_ids_array_ptr, in kfd_ioctl_unmap_memory_from_gpu()
1546 args->n_devices * sizeof(*devices_arr)); in kfd_ioctl_unmap_memory_from_gpu()
1561 GET_IDR_HANDLE(args->handle)); in kfd_ioctl_unmap_memory_from_gpu()
1567 for (i = args->n_success; i < args->n_devices; i++) { in kfd_ioctl_unmap_memory_from_gpu()
1583 i, args->n_devices); in kfd_ioctl_unmap_memory_from_gpu()
1586 args->n_success = i+1; in kfd_ioctl_unmap_memory_from_gpu()
1607 struct kfd_ioctl_alloc_queue_gws_args *args = data; in kfd_ioctl_alloc_queue_gws() local
1612 q = pqm_get_user_queue(&p->pqm, args->queue_id); in kfd_ioctl_alloc_queue_gws()
1631 retval = pqm_set_gws(&p->pqm, args->queue_id, args->num_gws ? dev->gws : NULL); in kfd_ioctl_alloc_queue_gws()
1634 args->first_gws = 0; in kfd_ioctl_alloc_queue_gws()
1645 struct kfd_ioctl_get_dmabuf_info_args *args = data; in kfd_ioctl_get_dmabuf_info() local
1660 if (args->metadata_ptr) { in kfd_ioctl_get_dmabuf_info()
1661 metadata_buffer = kzalloc(args->metadata_size, GFP_KERNEL); in kfd_ioctl_get_dmabuf_info()
1667 r = amdgpu_amdkfd_get_dmabuf_info(dev->kgd, args->dmabuf_fd, in kfd_ioctl_get_dmabuf_info()
1668 &dma_buf_kgd, &args->size, in kfd_ioctl_get_dmabuf_info()
1669 metadata_buffer, args->metadata_size, in kfd_ioctl_get_dmabuf_info()
1670 &args->metadata_size, &flags); in kfd_ioctl_get_dmabuf_info()
1680 args->gpu_id = dev->id; in kfd_ioctl_get_dmabuf_info()
1681 args->flags = flags; in kfd_ioctl_get_dmabuf_info()
1685 r = copy_to_user((void __user *)args->metadata_ptr, in kfd_ioctl_get_dmabuf_info()
1686 metadata_buffer, args->metadata_size); in kfd_ioctl_get_dmabuf_info()
1700 struct kfd_ioctl_import_dmabuf_args *args = data; in kfd_ioctl_import_dmabuf() local
1709 dev = kfd_device_by_id(args->gpu_id); in kfd_ioctl_import_dmabuf()
1713 dmabuf = dma_buf_get(args->dmabuf_fd); in kfd_ioctl_import_dmabuf()
1726 args->va_addr, pdd->vm, in kfd_ioctl_import_dmabuf()
1741 args->handle = MAKE_HANDLE(args->gpu_id, idr_handle); in kfd_ioctl_import_dmabuf()
1757 struct kfd_ioctl_smi_events_args *args = data; in kfd_ioctl_smi_events() local
1760 dev = kfd_device_by_id(args->gpuid); in kfd_ioctl_smi_events()
1764 return kfd_smi_event_open(dev, &args->anon_fd); in kfd_ioctl_smi_events()