Lines Matching refs:mcs_data
2335 static int hl_cs_poll_fences(struct multi_cs_data *mcs_data) in hl_cs_poll_fences() argument
2337 struct hl_fence **fence_ptr = mcs_data->fence_arr; in hl_cs_poll_fences()
2338 struct hl_device *hdev = mcs_data->ctx->hdev; in hl_cs_poll_fences()
2339 int i, rc, arr_len = mcs_data->arr_len; in hl_cs_poll_fences()
2340 u64 *seq_arr = mcs_data->seq_arr; in hl_cs_poll_fences()
2347 rc = hl_ctx_get_fences(mcs_data->ctx, seq_arr, fence_ptr, arr_len); in hl_cs_poll_fences()
2365 rc = hl_wait_for_fence(mcs_data->ctx, seq_arr[i], fence, in hl_cs_poll_fences()
2374 mcs_data->stream_master_qid_map |= fence->stream_master_qid_map; in hl_cs_poll_fences()
2379 mcs_data->completion_bitmap |= BIT(i); in hl_cs_poll_fences()
2392 mcs_data->update_ts = false; in hl_cs_poll_fences()
2393 mcs_data->gone_cs = true; in hl_cs_poll_fences()
2394 } else if (mcs_data->update_ts && in hl_cs_poll_fences()
2402 hl_fences_put(mcs_data->fence_arr, arr_len); in hl_cs_poll_fences()
2404 if (mcs_data->update_ts && in hl_cs_poll_fences()
2406 mcs_data->timestamp = ktime_to_ns(first_cs_time); in hl_cs_poll_fences()
2500 static int hl_wait_multi_cs_completion(struct multi_cs_data *mcs_data) in hl_wait_multi_cs_completion() argument
2502 struct hl_device *hdev = mcs_data->ctx->hdev; in hl_wait_multi_cs_completion()
2507 mcs_data->stream_master_qid_map); in hl_wait_multi_cs_completion()
2513 usecs_to_jiffies(mcs_data->timeout_us)); in hl_wait_multi_cs_completion()
2517 mcs_data->timestamp = mcs_compl->timestamp; in hl_wait_multi_cs_completion()
2521 mcs_data->wait_status = completion_rc; in hl_wait_multi_cs_completion()
2554 struct multi_cs_data mcs_data = {0}; in hl_multi_cs_wait_ioctl() local
2600 mcs_data.ctx = ctx; in hl_multi_cs_wait_ioctl()
2601 mcs_data.seq_arr = cs_seq_arr; in hl_multi_cs_wait_ioctl()
2602 mcs_data.fence_arr = fence_arr; in hl_multi_cs_wait_ioctl()
2603 mcs_data.arr_len = seq_arr_len; in hl_multi_cs_wait_ioctl()
2608 mcs_data.update_ts = true; in hl_multi_cs_wait_ioctl()
2609 rc = hl_cs_poll_fences(&mcs_data); in hl_multi_cs_wait_ioctl()
2616 if (rc || mcs_data.completion_bitmap || !args->in.timeout_us) in hl_multi_cs_wait_ioctl()
2620 mcs_data.timeout_us = args->in.timeout_us; in hl_multi_cs_wait_ioctl()
2621 rc = hl_wait_multi_cs_completion(&mcs_data); in hl_multi_cs_wait_ioctl()
2625 if (mcs_data.wait_status > 0) { in hl_multi_cs_wait_ioctl()
2630 mcs_data.update_ts = false; in hl_multi_cs_wait_ioctl()
2631 rc = hl_cs_poll_fences(&mcs_data); in hl_multi_cs_wait_ioctl()
2638 if (!mcs_data.completion_bitmap) { in hl_multi_cs_wait_ioctl()
2655 if (mcs_data.wait_status == -ERESTARTSYS) { in hl_multi_cs_wait_ioctl()
2664 if (mcs_data.completion_bitmap) { in hl_multi_cs_wait_ioctl()
2666 args->out.cs_completion_map = mcs_data.completion_bitmap; in hl_multi_cs_wait_ioctl()
2669 if (mcs_data.timestamp) { in hl_multi_cs_wait_ioctl()
2670 args->out.timestamp_nsec = mcs_data.timestamp; in hl_multi_cs_wait_ioctl()
2675 if (mcs_data.timestamp) in hl_multi_cs_wait_ioctl()