Lines Matching refs:mcs_data
2346 static int hl_cs_poll_fences(struct multi_cs_data *mcs_data) in hl_cs_poll_fences() argument
2348 struct hl_fence **fence_ptr = mcs_data->fence_arr; in hl_cs_poll_fences()
2349 struct hl_device *hdev = mcs_data->ctx->hdev; in hl_cs_poll_fences()
2350 int i, rc, arr_len = mcs_data->arr_len; in hl_cs_poll_fences()
2351 u64 *seq_arr = mcs_data->seq_arr; in hl_cs_poll_fences()
2358 rc = hl_ctx_get_fences(mcs_data->ctx, seq_arr, fence_ptr, arr_len); in hl_cs_poll_fences()
2376 rc = hl_wait_for_fence(mcs_data->ctx, seq_arr[i], fence, in hl_cs_poll_fences()
2388 mcs_data->stream_master_qid_map |= in hl_cs_poll_fences()
2401 mcs_data->completion_bitmap |= BIT(i); in hl_cs_poll_fences()
2407 if (mcs_data->update_ts && in hl_cs_poll_fences()
2412 mcs_data->update_ts = false; in hl_cs_poll_fences()
2413 mcs_data->gone_cs = true; in hl_cs_poll_fences()
2420 mcs_data->completion_bitmap |= BIT(i); in hl_cs_poll_fences()
2429 hl_fences_put(mcs_data->fence_arr, arr_len); in hl_cs_poll_fences()
2431 if (mcs_data->update_ts && in hl_cs_poll_fences()
2433 mcs_data->timestamp = ktime_to_ns(first_cs_time); in hl_cs_poll_fences()
2527 static int hl_wait_multi_cs_completion(struct multi_cs_data *mcs_data) in hl_wait_multi_cs_completion() argument
2529 struct hl_device *hdev = mcs_data->ctx->hdev; in hl_wait_multi_cs_completion()
2534 mcs_data->stream_master_qid_map); in hl_wait_multi_cs_completion()
2540 usecs_to_jiffies(mcs_data->timeout_us)); in hl_wait_multi_cs_completion()
2544 mcs_data->timestamp = mcs_compl->timestamp; in hl_wait_multi_cs_completion()
2548 mcs_data->wait_status = completion_rc; in hl_wait_multi_cs_completion()
2581 struct multi_cs_data mcs_data = {0}; in hl_multi_cs_wait_ioctl() local
2627 mcs_data.ctx = ctx; in hl_multi_cs_wait_ioctl()
2628 mcs_data.seq_arr = cs_seq_arr; in hl_multi_cs_wait_ioctl()
2629 mcs_data.fence_arr = fence_arr; in hl_multi_cs_wait_ioctl()
2630 mcs_data.arr_len = seq_arr_len; in hl_multi_cs_wait_ioctl()
2635 mcs_data.update_ts = true; in hl_multi_cs_wait_ioctl()
2636 rc = hl_cs_poll_fences(&mcs_data); in hl_multi_cs_wait_ioctl()
2643 if (rc || mcs_data.completion_bitmap || !args->in.timeout_us) in hl_multi_cs_wait_ioctl()
2647 mcs_data.timeout_us = args->in.timeout_us; in hl_multi_cs_wait_ioctl()
2648 rc = hl_wait_multi_cs_completion(&mcs_data); in hl_multi_cs_wait_ioctl()
2652 if (mcs_data.wait_status > 0) { in hl_multi_cs_wait_ioctl()
2657 mcs_data.update_ts = false; in hl_multi_cs_wait_ioctl()
2658 rc = hl_cs_poll_fences(&mcs_data); in hl_multi_cs_wait_ioctl()
2665 if (!mcs_data.completion_bitmap) { in hl_multi_cs_wait_ioctl()
2682 if (mcs_data.wait_status == -ERESTARTSYS) { in hl_multi_cs_wait_ioctl()
2691 if (mcs_data.completion_bitmap) { in hl_multi_cs_wait_ioctl()
2693 args->out.cs_completion_map = mcs_data.completion_bitmap; in hl_multi_cs_wait_ioctl()
2696 if (mcs_data.timestamp) { in hl_multi_cs_wait_ioctl()
2697 args->out.timestamp_nsec = mcs_data.timestamp; in hl_multi_cs_wait_ioctl()
2702 if (mcs_data.timestamp) in hl_multi_cs_wait_ioctl()