Lines Matching +full:byte +full:- +full:len
63 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_poll()
66 poll_wait(filep, &client->wait_queue, wait); in kfd_smi_ev_poll()
68 spin_lock(&client->lock); in kfd_smi_ev_poll()
69 if (!kfifo_is_empty(&client->fifo)) in kfd_smi_ev_poll()
71 spin_unlock(&client->lock); in kfd_smi_ev_poll()
81 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_read()
86 return -ENOMEM; in kfd_smi_ev_read()
91 spin_lock(&client->lock); in kfd_smi_ev_read()
92 to_copy = kfifo_len(&client->fifo); in kfd_smi_ev_read()
94 spin_unlock(&client->lock); in kfd_smi_ev_read()
95 ret = -EAGAIN; in kfd_smi_ev_read()
99 ret = kfifo_out(&client->fifo, buf, to_copy); in kfd_smi_ev_read()
100 spin_unlock(&client->lock); in kfd_smi_ev_read()
102 ret = -EAGAIN; in kfd_smi_ev_read()
108 ret = -EFAULT; in kfd_smi_ev_read()
123 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_write()
127 return -EFAULT; in kfd_smi_ev_write()
129 return -EFAULT; in kfd_smi_ev_write()
131 WRITE_ONCE(client->events, events); in kfd_smi_ev_write()
138 struct kfd_smi_client *client = filep->private_data; in kfd_smi_ev_release()
139 struct kfd_dev *dev = client->dev; in kfd_smi_ev_release()
141 spin_lock(&dev->smi_lock); in kfd_smi_ev_release()
142 list_del_rcu(&client->list); in kfd_smi_ev_release()
143 spin_unlock(&dev->smi_lock); in kfd_smi_ev_release()
146 kfifo_free(&client->fifo); in kfd_smi_ev_release()
153 char *event_msg, int len) in add_event_to_kfifo() argument
159 list_for_each_entry_rcu(client, &dev->smi_clients, list) { in add_event_to_kfifo()
160 if (!(READ_ONCE(client->events) & in add_event_to_kfifo()
163 spin_lock(&client->lock); in add_event_to_kfifo()
164 if (kfifo_avail(&client->fifo) >= len) { in add_event_to_kfifo()
165 kfifo_in(&client->fifo, event_msg, len); in add_event_to_kfifo()
166 wake_up_all(&client->wait_queue); in add_event_to_kfifo()
171 spin_unlock(&client->lock); in add_event_to_kfifo()
182 * 1 byte event + 1 byte space + 8 bytes seq num + in kfd_smi_event_update_gpu_reset()
183 * 1 byte \n + 1 byte \0 = 12 in kfd_smi_event_update_gpu_reset()
186 int len; in kfd_smi_event_update_gpu_reset() local
189 if (list_empty(&dev->smi_clients)) in kfd_smi_event_update_gpu_reset()
198 ++(dev->reset_seq_num); in kfd_smi_event_update_gpu_reset()
201 len = snprintf(fifo_in, sizeof(fifo_in), "%x %x\n", event, in kfd_smi_event_update_gpu_reset()
202 dev->reset_seq_num); in kfd_smi_event_update_gpu_reset()
204 add_event_to_kfifo(dev, event, fifo_in, len); in kfd_smi_event_update_gpu_reset()
210 struct amdgpu_device *adev = (struct amdgpu_device *)dev->kgd; in kfd_smi_event_update_thermal_throttling()
214 * 1 byte event + 1 byte space + 8 byte throttle_bitmask + in kfd_smi_event_update_thermal_throttling()
215 * 1 byte : + 16 byte thermal_interupt_counter + 1 byte \n + in kfd_smi_event_update_thermal_throttling()
216 * 1 byte \0 = 29 in kfd_smi_event_update_thermal_throttling()
219 int len; in kfd_smi_event_update_thermal_throttling() local
221 if (list_empty(&dev->smi_clients)) in kfd_smi_event_update_thermal_throttling()
224 len = snprintf(fifo_in, sizeof(fifo_in), "%x %x:%llx\n", in kfd_smi_event_update_thermal_throttling()
226 atomic64_read(&adev->smu.throttle_int_counter)); in kfd_smi_event_update_thermal_throttling()
228 add_event_to_kfifo(dev, KFD_SMI_EVENT_THERMAL_THROTTLE, fifo_in, len); in kfd_smi_event_update_thermal_throttling()
233 struct amdgpu_device *adev = (struct amdgpu_device *)dev->kgd; in kfd_smi_event_update_vmfault()
236 /* 1 byte event + 1 byte space + 25 bytes msg + 1 byte \n + in kfd_smi_event_update_vmfault()
237 * 1 byte \0 = 29 in kfd_smi_event_update_vmfault()
240 int len; in kfd_smi_event_update_vmfault() local
242 if (list_empty(&dev->smi_clients)) in kfd_smi_event_update_vmfault()
251 len = snprintf(fifo_in, sizeof(fifo_in), "%x %x:%s\n", KFD_SMI_EVENT_VMFAULT, in kfd_smi_event_update_vmfault()
254 add_event_to_kfifo(dev, KFD_SMI_EVENT_VMFAULT, fifo_in, len); in kfd_smi_event_update_vmfault()
264 return -ENOMEM; in kfd_smi_event_open()
265 INIT_LIST_HEAD(&client->list); in kfd_smi_event_open()
267 ret = kfifo_alloc(&client->fifo, MAX_KFIFO_SIZE, GFP_KERNEL); in kfd_smi_event_open()
276 kfifo_free(&client->fifo); in kfd_smi_event_open()
282 init_waitqueue_head(&client->wait_queue); in kfd_smi_event_open()
283 spin_lock_init(&client->lock); in kfd_smi_event_open()
284 client->events = 0; in kfd_smi_event_open()
285 client->dev = dev; in kfd_smi_event_open()
287 spin_lock(&dev->smi_lock); in kfd_smi_event_open()
288 list_add_rcu(&client->list, &dev->smi_clients); in kfd_smi_event_open()
289 spin_unlock(&dev->smi_lock); in kfd_smi_event_open()