Lines Matching +full:trigger +full:- +full:address
1 // SPDX-License-Identifier: GPL-2.0 OR MIT
3 * Copyright 2020-2022 Advanced Micro Devices, Inc.
67 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_poll()
70 poll_wait(filep, &client->wait_queue, wait); in kfd_smi_ev_poll()
72 spin_lock(&client->lock); in kfd_smi_ev_poll()
73 if (!kfifo_is_empty(&client->fifo)) in kfd_smi_ev_poll()
75 spin_unlock(&client->lock); in kfd_smi_ev_poll()
85 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_read()
91 return -ENOMEM; in kfd_smi_ev_read()
96 spin_lock(&client->lock); in kfd_smi_ev_read()
97 to_copy = kfifo_len(&client->fifo); in kfd_smi_ev_read()
99 spin_unlock(&client->lock); in kfd_smi_ev_read()
100 ret = -EAGAIN; in kfd_smi_ev_read()
104 ret = kfifo_out(&client->fifo, buf, to_copy); in kfd_smi_ev_read()
105 spin_unlock(&client->lock); in kfd_smi_ev_read()
107 ret = -EAGAIN; in kfd_smi_ev_read()
113 ret = -EFAULT; in kfd_smi_ev_read()
128 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_write()
132 return -EFAULT; in kfd_smi_ev_write()
134 return -EFAULT; in kfd_smi_ev_write()
136 WRITE_ONCE(client->events, events); in kfd_smi_ev_write()
145 kfifo_free(&ev->fifo); in kfd_smi_ev_client_free()
151 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_release()
152 struct kfd_node *dev = client->dev; in kfd_smi_ev_release()
154 spin_lock(&dev->smi_lock); in kfd_smi_ev_release()
155 list_del_rcu(&client->list); in kfd_smi_ev_release()
156 spin_unlock(&dev->smi_lock); in kfd_smi_ev_release()
158 call_rcu(&client->rcu, kfd_smi_ev_client_free); in kfd_smi_ev_release()
166 uint64_t events = READ_ONCE(client->events); in kfd_smi_ev_enabled()
168 if (pid && client->pid != pid && !(client->suser && (events & all))) in kfd_smi_ev_enabled()
181 list_for_each_entry_rcu(client, &dev->smi_clients, list) { in add_event_to_kfifo()
184 spin_lock(&client->lock); in add_event_to_kfifo()
185 if (kfifo_avail(&client->fifo) >= len) { in add_event_to_kfifo()
186 kfifo_in(&client->fifo, event_msg, len); in add_event_to_kfifo()
187 wake_up_all(&client->wait_queue); in add_event_to_kfifo()
192 spin_unlock(&client->lock); in add_event_to_kfifo()
206 if (list_empty(&dev->smi_clients)) in kfd_smi_event_add()
212 len += vsnprintf(fifo_in + len, sizeof(fifo_in) - len, fmt, args); in kfd_smi_event_add()
226 ++(dev->reset_seq_num); in kfd_smi_event_update_gpu_reset()
228 kfd_smi_event_add(0, dev, event, "%x\n", dev->reset_seq_num); in kfd_smi_event_update_gpu_reset()
236 amdgpu_dpm_get_thermal_throttling_counter(dev->adev)); in kfd_smi_event_update_thermal_throttling()
244 amdgpu_vm_get_task_info(dev->adev, pasid, &task_info); in kfd_smi_event_update_vmfault()
254 unsigned long address, bool write_fault, in kfd_smi_event_page_fault_start() argument
258 "%lld -%d @%lx(%x) %c\n", ktime_to_ns(ts), pid, in kfd_smi_event_page_fault_start()
259 address, node->id, write_fault ? 'W' : 'R'); in kfd_smi_event_page_fault_start()
263 unsigned long address, bool migration) in kfd_smi_event_page_fault_end() argument
266 "%lld -%d @%lx(%x) %c\n", ktime_get_boottime_ns(), in kfd_smi_event_page_fault_end()
267 pid, address, node->id, migration ? 'M' : 'U'); in kfd_smi_event_page_fault_end()
274 uint32_t trigger) in kfd_smi_event_migration_start() argument
277 "%lld -%d @%lx(%lx) %x->%x %x:%x %d\n", in kfd_smi_event_migration_start()
278 ktime_get_boottime_ns(), pid, start, end - start, in kfd_smi_event_migration_start()
279 from, to, prefetch_loc, preferred_loc, trigger); in kfd_smi_event_migration_start()
284 uint32_t from, uint32_t to, uint32_t trigger) in kfd_smi_event_migration_end() argument
287 "%lld -%d @%lx(%lx) %x->%x %d\n", in kfd_smi_event_migration_end()
288 ktime_get_boottime_ns(), pid, start, end - start, in kfd_smi_event_migration_end()
289 from, to, trigger); in kfd_smi_event_migration_end()
293 uint32_t trigger) in kfd_smi_event_queue_eviction() argument
296 "%lld -%d %x %d\n", ktime_get_boottime_ns(), pid, in kfd_smi_event_queue_eviction()
297 node->id, trigger); in kfd_smi_event_queue_eviction()
303 "%lld -%d %x\n", ktime_get_boottime_ns(), pid, in kfd_smi_event_queue_restore()
304 node->id); in kfd_smi_event_queue_restore()
316 for (i = 0; i < p->n_pdds; i++) { in kfd_smi_event_queue_restore_rescheduled()
317 struct kfd_process_device *pdd = p->pdds[i]; in kfd_smi_event_queue_restore_rescheduled()
319 kfd_smi_event_add(p->lead_thread->pid, pdd->dev, in kfd_smi_event_queue_restore_rescheduled()
321 "%lld -%d %x %c\n", ktime_get_boottime_ns(), in kfd_smi_event_queue_restore_rescheduled()
322 p->lead_thread->pid, pdd->dev->id, 'R'); in kfd_smi_event_queue_restore_rescheduled()
328 unsigned long address, unsigned long last, in kfd_smi_event_unmap_from_gpu() argument
329 uint32_t trigger) in kfd_smi_event_unmap_from_gpu() argument
332 "%lld -%d @%lx(%lx) %x %d\n", ktime_get_boottime_ns(), in kfd_smi_event_unmap_from_gpu()
333 pid, address, last - address + 1, node->id, trigger); in kfd_smi_event_unmap_from_gpu()
343 return -ENOMEM; in kfd_smi_event_open()
344 INIT_LIST_HEAD(&client->list); in kfd_smi_event_open()
346 ret = kfifo_alloc(&client->fifo, MAX_KFIFO_SIZE, GFP_KERNEL); in kfd_smi_event_open()
352 init_waitqueue_head(&client->wait_queue); in kfd_smi_event_open()
353 spin_lock_init(&client->lock); in kfd_smi_event_open()
354 client->events = 0; in kfd_smi_event_open()
355 client->dev = dev; in kfd_smi_event_open()
356 client->pid = current->tgid; in kfd_smi_event_open()
357 client->suser = capable(CAP_SYS_ADMIN); in kfd_smi_event_open()
359 spin_lock(&dev->smi_lock); in kfd_smi_event_open()
360 list_add_rcu(&client->list, &dev->smi_clients); in kfd_smi_event_open()
361 spin_unlock(&dev->smi_lock); in kfd_smi_event_open()
366 spin_lock(&dev->smi_lock); in kfd_smi_event_open()
367 list_del_rcu(&client->list); in kfd_smi_event_open()
368 spin_unlock(&dev->smi_lock); in kfd_smi_event_open()
372 kfifo_free(&client->fifo); in kfd_smi_event_open()