Home
last modified time | relevance | path

Searched refs:katom (Results 1 - 25 of 143) sorted by relevance

123456

/device/soc/rockchip/common/vendor/drivers/gpu/arm/midgard/
H A Dmali_kbase_jd.c42 /* Return whether katom will run on the GPU or not. Currently only soft jobs and
44 #define IS_GPU_ATOM(katom) \
45 (!(((katom)->core_req & BASE_JD_REQ_SOFT_JOB) || (((katom)->core_req & BASE_JD_REQ_ATOM_TYPE) == BASE_JD_REQ_DEP)))
73 static int jd_run_atom(struct kbase_jd_atom *katom) in jd_run_atom() argument
75 struct kbase_context *kctx = katom->kctx; in jd_run_atom()
77 KBASE_DEBUG_ASSERT(katom->status != KBASE_JD_ATOM_STATE_UNUSED); in jd_run_atom()
79 if ((katom->core_req & BASE_JD_REQ_ATOM_TYPE) == BASE_JD_REQ_DEP) { in jd_run_atom()
81 katom->status = KBASE_JD_ATOM_STATE_COMPLETED; in jd_run_atom()
83 } else if (katom in jd_run_atom()
106 kbase_jd_dep_clear_locked(struct kbase_jd_atom *katom) kbase_jd_dep_clear_locked() argument
143 kbase_jd_kds_waiters_add(struct kbase_jd_atom *katom) kbase_jd_kds_waiters_add() argument
159 kbase_jd_kds_waiters_remove(struct kbase_jd_atom *katom) kbase_jd_kds_waiters_remove() argument
167 struct kbase_jd_atom *katom; kds_dep_clear() local
186 kbase_cancel_kds_wait_job(struct kbase_jd_atom *katom) kbase_cancel_kds_wait_job() argument
203 kbase_jd_free_external_resources(struct kbase_jd_atom *katom) kbase_jd_free_external_resources() argument
235 kbase_jd_post_external_resources(struct kbase_jd_atom *katom) kbase_jd_post_external_resources() argument
276 kbase_jd_pre_external_resources(struct kbase_jd_atom *katom, const struct base_jd_atom_v2 *user_atom) kbase_jd_pre_external_resources() argument
524 jd_resolve_dep(struct list_head *out_list, struct kbase_jd_atom *katom, u8 d, bool ctx_is_dying) jd_resolve_dep() argument
606 jd_force_failure(struct kbase_device *kbdev, struct kbase_jd_atom *katom) jd_force_failure() argument
626 jd_check_force_failure(struct kbase_jd_atom *katom) jd_check_force_failure() argument
664 is_dep_valid(struct kbase_jd_atom *katom) is_dep_valid() argument
748 jd_done_nolock(struct kbase_jd_atom *katom, struct list_head *completed_jobs_ctx) jd_done_nolock() argument
929 jd_submit_atom(struct kbase_context *kctx, const struct base_jd_atom_v2 *user_atom, struct kbase_jd_atom *katom) jd_submit_atom() argument
1250 struct kbase_jd_atom *katom; kbase_jd_submit() local
1383 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); kbase_jd_done_worker() local
1562 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); jd_cancel_worker() local
1626 kbase_jd_done(struct kbase_jd_atom *katom, int slot_nr, ktime_t *end_timestamp, kbasep_js_atom_done_code done_code) kbase_jd_done() argument
1664 kbase_jd_cancel(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_jd_cancel() argument
1689 struct kbase_jd_atom *katom; kbase_jd_zap_context() local
[all...]
H A Dmali_kbase_dma_fence.c35 static void kbase_dma_fence_waiters_add(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_add() argument
37 struct kbase_context *kctx = katom->kctx; in kbase_dma_fence_waiters_add()
39 list_add_tail(&katom->queue, &kctx->dma_fence.waiting_resource); in kbase_dma_fence_waiters_add()
42 static void kbase_dma_fence_waiters_remove(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_remove() argument
44 list_del(&katom->queue); in kbase_dma_fence_waiters_remove()
109 * kbase_dma_fence_queue_work() - Queue work to handle @katom
110 * @katom: Pointer to atom for which to queue work
112 * Queue kbase_dma_fence_work() for @katom to clean up the fence callbacks and
115 static void kbase_dma_fence_queue_work(struct kbase_jd_atom *katom) in kbase_dma_fence_queue_work() argument
117 struct kbase_context *kctx = katom in kbase_dma_fence_queue_work()
132 kbase_dma_fence_cancel_atom(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_atom() argument
165 struct kbase_jd_atom *katom; kbase_dma_fence_work() local
204 struct kbase_jd_atom *katom = kcb->katom; kbase_dma_fence_cb() local
216 kbase_dma_fence_add_reservation_callback(struct kbase_jd_atom *katom, struct reservation_object *resv, bool exclusive) kbase_dma_fence_add_reservation_callback() argument
299 kbase_dma_fence_wait(struct kbase_jd_atom *katom, struct kbase_dma_fence_resv_info *info) kbase_dma_fence_wait() argument
389 struct kbase_jd_atom *katom; kbase_dma_fence_cancel_all_atoms() local
397 kbase_dma_fence_cancel_callbacks(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_callbacks() argument
405 kbase_dma_fence_signal(struct kbase_jd_atom *katom) kbase_dma_fence_signal() argument
[all...]
H A Dmali_kbase_sync_file.c54 int kbase_sync_fence_out_create(struct kbase_jd_atom *katom, int stream_fd) in kbase_sync_fence_out_create() argument
64 fence = kbase_fence_out_new(katom); in kbase_sync_fence_out_create()
82 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
89 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
98 int kbase_sync_fence_in_from_fd(struct kbase_jd_atom *katom, int fd) in kbase_sync_fence_in_from_fd() argument
110 kbase_fence_fence_in_set(katom, fence); in kbase_sync_fence_in_from_fd()
133 kbase_sync_fence_out_trigger(struct kbase_jd_atom *katom, int result) in kbase_sync_fence_out_trigger() argument
137 if (!kbase_fence_out_is_ours(katom)) { in kbase_sync_fence_out_trigger()
142 res = kbase_fence_out_signal(katom, result); in kbase_sync_fence_out_trigger()
144 dev_warn(katom in kbase_sync_fence_out_trigger()
162 struct kbase_jd_atom *katom = kcb->katom; kbase_fence_wait_callback() local
191 kbase_sync_fence_in_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_wait() argument
237 kbase_sync_fence_in_cancel_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_cancel_wait() argument
259 kbase_sync_fence_out_remove(struct kbase_jd_atom *katom) kbase_sync_fence_out_remove() argument
264 kbase_sync_fence_in_remove(struct kbase_jd_atom *katom) kbase_sync_fence_in_remove() argument
314 kbase_sync_fence_in_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_in_info_get() argument
335 kbase_sync_fence_out_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_out_info_get() argument
357 kbase_sync_fence_in_dump(struct kbase_jd_atom *katom) kbase_sync_fence_in_dump() argument
[all...]
H A Dmali_kbase_fence.h40 * @katom: Pointer to katom that is waiting on this callback
42 * @node: List head for linking this callback to the katom
52 struct kbase_jd_atom *katom; member
58 * @katom: Atom to create an output fence for
63 struct fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
65 struct dma_fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
71 * @katom: Atom to assign input fence to
76 #define kbase_fence_fence_in_set(katom, fence) \
78 WARN_ON((katom)
89 kbase_fence_out_remove(struct kbase_jd_atom *katom) kbase_fence_out_remove() argument
104 kbase_fence_in_remove(struct kbase_jd_atom *katom) kbase_fence_in_remove() argument
119 kbase_fence_out_is_ours(struct kbase_jd_atom *katom) kbase_fence_out_is_ours() argument
131 kbase_fence_out_signal(struct kbase_jd_atom *katom, int status) kbase_fence_out_signal() argument
188 kbase_fence_dep_count_set(struct kbase_jd_atom *katom, int val) kbase_fence_dep_count_set() argument
201 kbase_fence_dep_count_dec_and_test(struct kbase_jd_atom *katom) kbase_fence_dep_count_dec_and_test() argument
214 kbase_fence_dep_count_read(struct kbase_jd_atom *katom) kbase_fence_dep_count_read() argument
[all...]
H A Dmali_kbase_softjobs.c45 static void kbasep_add_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_add_waiting_soft_job() argument
47 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_soft_job()
51 list_add_tail(&katom->queue, &kctx->waiting_soft_jobs); in kbasep_add_waiting_soft_job()
55 void kbasep_remove_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_remove_waiting_soft_job() argument
57 struct kbase_context *kctx = katom->kctx; in kbasep_remove_waiting_soft_job()
61 list_del(&katom->queue); in kbasep_remove_waiting_soft_job()
65 static void kbasep_add_waiting_with_timeout(struct kbase_jd_atom *katom) in kbasep_add_waiting_with_timeout() argument
67 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_with_timeout()
72 katom->start_timestamp = ktime_get(); in kbasep_add_waiting_with_timeout()
77 kbasep_add_waiting_soft_job(katom); in kbasep_add_waiting_with_timeout()
124 kbase_dump_cpu_gpu_time(struct kbase_jd_atom *katom) kbase_dump_cpu_gpu_time() argument
192 kbase_soft_event_wait_callback(struct kbase_jd_atom *katom) kbase_soft_event_wait_callback() argument
208 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, work); kbasep_soft_event_complete_job() local
230 struct kbase_jd_atom *katom = list_entry(entry, struct kbase_jd_atom, queue); kbasep_complete_triggered_soft_events() local
265 kbase_fence_debug_check_atom(struct kbase_jd_atom *katom) kbase_fence_debug_check_atom() argument
295 kbase_fence_debug_wait_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_wait_timeout() argument
324 struct kbase_jd_atom *katom; global() member
331 struct kbase_jd_atom *katom = w->katom; kbase_fence_debug_wait_timeout_worker() local
341 kbase_fence_debug_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_timeout() argument
372 struct kbase_jd_atom *katom = list_entry(entry, struct kbase_jd_atom, queue); kbasep_soft_job_timeout_worker() local
404 kbasep_soft_event_wait(struct kbase_jd_atom *katom) kbasep_soft_event_wait() argument
424 kbasep_soft_event_update_locked(struct kbase_jd_atom *katom, unsigned char new_status) kbasep_soft_event_update_locked() argument
470 kbasep_soft_event_cancel_job(struct kbase_jd_atom *katom) kbasep_soft_event_cancel_job() argument
508 kbase_debug_copy_finish(struct kbase_jd_atom *katom) kbase_debug_copy_finish() argument
553 kbase_debug_copy_prepare(struct kbase_jd_atom *katom) kbase_debug_copy_prepare() argument
862 kbase_debug_copy(struct kbase_jd_atom *katom) kbase_debug_copy() argument
877 kbase_jit_allocate_prepare(struct kbase_jd_atom *katom) kbase_jit_allocate_prepare() argument
947 kbase_jit_free_get_id(struct kbase_jd_atom *katom) kbase_jit_free_get_id() argument
956 kbase_jit_allocate_process(struct kbase_jd_atom *katom) kbase_jit_allocate_process() argument
1055 kbase_jit_allocate_finish(struct kbase_jd_atom *katom) kbase_jit_allocate_finish() argument
1074 kbase_jit_free_prepare(struct kbase_jd_atom *katom) kbase_jit_free_prepare() argument
1084 kbase_jit_free_process(struct kbase_jd_atom *katom) kbase_jit_free_process() argument
1109 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, work); kbasep_jit_free_finish_worker() local
1123 kbase_jit_free_finish(struct kbase_jd_atom *katom) kbase_jit_free_finish() argument
1143 kbase_ext_res_prepare(struct kbase_jd_atom *katom) kbase_ext_res_prepare() argument
1204 kbase_ext_res_process(struct kbase_jd_atom *katom, bool map) kbase_ext_res_process() argument
1261 kbase_ext_res_finish(struct kbase_jd_atom *katom) kbase_ext_res_finish() argument
1270 kbase_process_soft_job(struct kbase_jd_atom *katom) kbase_process_soft_job() argument
1330 kbase_cancel_soft_job(struct kbase_jd_atom *katom) kbase_cancel_soft_job() argument
1347 kbase_prepare_soft_job(struct kbase_jd_atom *katom) kbase_prepare_soft_job() argument
1433 kbase_finish_soft_job(struct kbase_jd_atom *katom) kbase_finish_soft_job() argument
[all...]
/device/soc/rockchip/common/kernel/drivers/gpu/arm/midgard/
H A Dmali_kbase_jd.c46 /* Return whether katom will run on the GPU or not. Currently only soft jobs and
48 #define IS_GPU_ATOM(katom) (!((katom->core_req & BASE_JD_REQ_SOFT_JOB) || \
49 ((katom->core_req & BASE_JD_REQ_ATOM_TYPE) == \
78 static int jd_run_atom(struct kbase_jd_atom *katom) in jd_run_atom() argument
80 struct kbase_context *kctx = katom->kctx; in jd_run_atom()
82 KBASE_DEBUG_ASSERT(katom->status != KBASE_JD_ATOM_STATE_UNUSED); in jd_run_atom()
84 if ((katom->core_req & BASE_JD_REQ_ATOM_TYPE) == BASE_JD_REQ_DEP) { in jd_run_atom()
86 katom->status = KBASE_JD_ATOM_STATE_COMPLETED; in jd_run_atom()
88 } else if (katom in jd_run_atom()
111 kbase_jd_dep_clear_locked(struct kbase_jd_atom *katom) kbase_jd_dep_clear_locked() argument
149 kbase_jd_kds_waiters_add(struct kbase_jd_atom *katom) kbase_jd_kds_waiters_add() argument
165 kbase_jd_kds_waiters_remove(struct kbase_jd_atom *katom) kbase_jd_kds_waiters_remove() argument
173 struct kbase_jd_atom *katom; kds_dep_clear() local
192 kbase_cancel_kds_wait_job(struct kbase_jd_atom *katom) kbase_cancel_kds_wait_job() argument
208 kbase_jd_free_external_resources(struct kbase_jd_atom *katom) kbase_jd_free_external_resources() argument
239 kbase_jd_post_external_resources(struct kbase_jd_atom *katom) kbase_jd_post_external_resources() argument
281 kbase_jd_pre_external_resources(struct kbase_jd_atom *katom, const struct base_jd_atom_v2 *user_atom) kbase_jd_pre_external_resources() argument
543 jd_resolve_dep(struct list_head *out_list, struct kbase_jd_atom *katom, u8 d, bool ctx_is_dying) jd_resolve_dep() argument
636 jd_force_failure(struct kbase_device *kbdev, struct kbase_jd_atom *katom) jd_force_failure() argument
656 jd_check_force_failure(struct kbase_jd_atom *katom) jd_check_force_failure() argument
696 is_dep_valid(struct kbase_jd_atom *katom) is_dep_valid() argument
783 jd_done_nolock(struct kbase_jd_atom *katom, struct list_head *completed_jobs_ctx) jd_done_nolock() argument
966 jd_submit_atom(struct kbase_context *kctx, const struct base_jd_atom_v2 *user_atom, struct kbase_jd_atom *katom) jd_submit_atom() argument
1315 struct kbase_jd_atom *katom; kbase_jd_submit() local
1457 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); kbase_jd_done_worker() local
1638 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); jd_cancel_worker() local
1701 kbase_jd_done(struct kbase_jd_atom *katom, int slot_nr, ktime_t *end_timestamp, kbasep_js_atom_done_code done_code) kbase_jd_done() argument
1739 kbase_jd_cancel(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_jd_cancel() argument
1765 struct kbase_jd_atom *katom; kbase_jd_zap_context() local
[all...]
H A Dmali_kbase_dma_fence.c40 kbase_dma_fence_waiters_add(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_add() argument
42 struct kbase_context *kctx = katom->kctx; in kbase_dma_fence_waiters_add()
44 list_add_tail(&katom->queue, &kctx->dma_fence.waiting_resource); in kbase_dma_fence_waiters_add()
48 kbase_dma_fence_waiters_remove(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_remove() argument
50 list_del(&katom->queue); in kbase_dma_fence_waiters_remove()
113 * kbase_dma_fence_queue_work() - Queue work to handle @katom
114 * @katom: Pointer to atom for which to queue work
116 * Queue kbase_dma_fence_work() for @katom to clean up the fence callbacks and
120 kbase_dma_fence_queue_work(struct kbase_jd_atom *katom) in kbase_dma_fence_queue_work() argument
122 struct kbase_context *kctx = katom in kbase_dma_fence_queue_work()
138 kbase_dma_fence_cancel_atom(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_atom() argument
171 struct kbase_jd_atom *katom; kbase_dma_fence_work() local
210 struct kbase_jd_atom *katom = kcb->katom; kbase_dma_fence_cb() local
222 kbase_dma_fence_add_reservation_callback(struct kbase_jd_atom *katom, struct reservation_object *resv, bool exclusive) kbase_dma_fence_add_reservation_callback() argument
309 kbase_dma_fence_wait(struct kbase_jd_atom *katom, struct kbase_dma_fence_resv_info *info) kbase_dma_fence_wait() argument
405 struct kbase_jd_atom *katom; kbase_dma_fence_cancel_all_atoms() local
413 kbase_dma_fence_cancel_callbacks(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_callbacks() argument
420 kbase_dma_fence_signal(struct kbase_jd_atom *katom) kbase_dma_fence_signal() argument
[all...]
H A Dmali_kbase_sync_file.c57 int kbase_sync_fence_out_create(struct kbase_jd_atom *katom, int stream_fd) in kbase_sync_fence_out_create() argument
67 fence = kbase_fence_out_new(katom); in kbase_sync_fence_out_create()
84 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
91 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
100 int kbase_sync_fence_in_from_fd(struct kbase_jd_atom *katom, int fd) in kbase_sync_fence_in_from_fd() argument
111 kbase_fence_fence_in_set(katom, fence); in kbase_sync_fence_in_from_fd()
133 kbase_sync_fence_out_trigger(struct kbase_jd_atom *katom, int result) in kbase_sync_fence_out_trigger() argument
137 if (!kbase_fence_out_is_ours(katom)) { in kbase_sync_fence_out_trigger()
142 res = kbase_fence_out_signal(katom, result); in kbase_sync_fence_out_trigger()
144 dev_warn(katom in kbase_sync_fence_out_trigger()
164 struct kbase_jd_atom *katom = kcb->katom; kbase_fence_wait_callback() local
193 kbase_sync_fence_in_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_wait() argument
238 kbase_sync_fence_in_cancel_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_cancel_wait() argument
259 kbase_sync_fence_out_remove(struct kbase_jd_atom *katom) kbase_sync_fence_out_remove() argument
264 kbase_sync_fence_in_remove(struct kbase_jd_atom *katom) kbase_sync_fence_in_remove() argument
313 kbase_sync_fence_in_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_in_info_get() argument
333 kbase_sync_fence_out_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_out_info_get() argument
355 kbase_sync_fence_in_dump(struct kbase_jd_atom *katom) kbase_sync_fence_in_dump() argument
[all...]
H A Dmali_kbase_fence.h42 * @katom: Pointer to katom that is waiting on this callback
44 * @node: List head for linking this callback to the katom
54 struct kbase_jd_atom *katom; member
60 * @katom: Atom to create an output fence for
65 struct fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
67 struct dma_fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
73 * @katom: Atom to assign input fence to
78 #define kbase_fence_fence_in_set(katom, fence) \
80 WARN_ON((katom)
91 kbase_fence_out_remove(struct kbase_jd_atom *katom) kbase_fence_out_remove() argument
106 kbase_fence_in_remove(struct kbase_jd_atom *katom) kbase_fence_in_remove() argument
121 kbase_fence_out_is_ours(struct kbase_jd_atom *katom) kbase_fence_out_is_ours() argument
134 kbase_fence_out_signal(struct kbase_jd_atom *katom, int status) kbase_fence_out_signal() argument
198 kbase_fence_dep_count_set(struct kbase_jd_atom *katom, int val) kbase_fence_dep_count_set() argument
212 kbase_fence_dep_count_dec_and_test(struct kbase_jd_atom *katom) kbase_fence_dep_count_dec_and_test() argument
225 kbase_fence_dep_count_read(struct kbase_jd_atom *katom) kbase_fence_dep_count_read() argument
[all...]
H A Dmali_kbase_softjobs.c49 static void kbasep_add_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_add_waiting_soft_job() argument
51 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_soft_job()
55 list_add_tail(&katom->queue, &kctx->waiting_soft_jobs); in kbasep_add_waiting_soft_job()
59 void kbasep_remove_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_remove_waiting_soft_job() argument
61 struct kbase_context *kctx = katom->kctx; in kbasep_remove_waiting_soft_job()
65 list_del(&katom->queue); in kbasep_remove_waiting_soft_job()
69 static void kbasep_add_waiting_with_timeout(struct kbase_jd_atom *katom) in kbasep_add_waiting_with_timeout() argument
71 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_with_timeout()
76 katom->start_timestamp = ktime_get(); in kbasep_add_waiting_with_timeout()
81 kbasep_add_waiting_soft_job(katom); in kbasep_add_waiting_with_timeout()
130 kbase_dump_cpu_gpu_time(struct kbase_jd_atom *katom) kbase_dump_cpu_gpu_time() argument
198 kbase_soft_event_wait_callback(struct kbase_jd_atom *katom) kbase_soft_event_wait_callback() argument
213 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, kbasep_soft_event_complete_job() local
234 struct kbase_jd_atom *katom = list_entry( kbasep_complete_triggered_soft_events() local
271 kbase_fence_debug_check_atom(struct kbase_jd_atom *katom) kbase_fence_debug_check_atom() argument
305 kbase_fence_debug_wait_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_wait_timeout() argument
338 struct kbase_jd_atom *katom; global() member
346 struct kbase_jd_atom *katom = w->katom; kbase_fence_debug_wait_timeout_worker() local
356 kbase_fence_debug_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_timeout() argument
387 struct kbase_jd_atom *katom = list_entry(entry, kbasep_soft_job_timeout_worker() local
421 kbasep_soft_event_wait(struct kbase_jd_atom *katom) kbasep_soft_event_wait() argument
440 kbasep_soft_event_update_locked(struct kbase_jd_atom *katom, unsigned char new_status) kbasep_soft_event_update_locked() argument
487 kbasep_soft_event_cancel_job(struct kbase_jd_atom *katom) kbasep_soft_event_cancel_job() argument
523 kbase_debug_copy_finish(struct kbase_jd_atom *katom) kbase_debug_copy_finish() argument
567 kbase_debug_copy_prepare(struct kbase_jd_atom *katom) kbase_debug_copy_prepare() argument
890 kbase_debug_copy(struct kbase_jd_atom *katom) kbase_debug_copy() argument
906 kbase_jit_allocate_prepare(struct kbase_jd_atom *katom) kbase_jit_allocate_prepare() argument
976 kbase_jit_free_get_id(struct kbase_jd_atom *katom) kbase_jit_free_get_id() argument
984 kbase_jit_allocate_process(struct kbase_jd_atom *katom) kbase_jit_allocate_process() argument
1086 kbase_jit_allocate_finish(struct kbase_jd_atom *katom) kbase_jit_allocate_finish() argument
1105 kbase_jit_free_prepare(struct kbase_jd_atom *katom) kbase_jit_free_prepare() argument
1115 kbase_jit_free_process(struct kbase_jd_atom *katom) kbase_jit_free_process() argument
1140 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, kbasep_jit_free_finish_worker() local
1154 kbase_jit_free_finish(struct kbase_jd_atom *katom) kbase_jit_free_finish() argument
1175 kbase_ext_res_prepare(struct kbase_jd_atom *katom) kbase_ext_res_prepare() argument
1237 kbase_ext_res_process(struct kbase_jd_atom *katom, bool map) kbase_ext_res_process() argument
1295 kbase_ext_res_finish(struct kbase_jd_atom *katom) kbase_ext_res_finish() argument
1304 kbase_process_soft_job(struct kbase_jd_atom *katom) kbase_process_soft_job() argument
1366 kbase_cancel_soft_job(struct kbase_jd_atom *katom) kbase_cancel_soft_job() argument
1383 kbase_prepare_soft_job(struct kbase_jd_atom *katom) kbase_prepare_soft_job() argument
1467 kbase_finish_soft_job(struct kbase_jd_atom *katom) kbase_finish_soft_job() argument
[all...]
/device/soc/rockchip/common/kernel/drivers/gpu/arm/bifrost/
H A Dmali_kbase_jd.c45 /* Return whether katom will run on the GPU or not. Currently only soft jobs and
48 #define IS_GPU_ATOM(katom) (!((katom->core_req & BASE_JD_REQ_SOFT_JOB) || \
49 ((katom->core_req & BASE_JD_REQ_ATOM_TYPE) == \
73 static void jd_mark_atom_complete(struct kbase_jd_atom *katom) in jd_mark_atom_complete() argument
75 katom->status = KBASE_JD_ATOM_STATE_COMPLETED; in jd_mark_atom_complete()
76 kbase_kinstr_jm_atom_complete(katom); in jd_mark_atom_complete()
77 dev_dbg(katom->kctx->kbdev->dev, "Atom %pK status to completed\n", in jd_mark_atom_complete()
78 (void *)katom); in jd_mark_atom_complete()
79 KBASE_TLSTREAM_TL_JD_ATOM_COMPLETE(katom in jd_mark_atom_complete()
89 jd_run_atom(struct kbase_jd_atom *katom) jd_run_atom() argument
124 kbase_jd_dep_clear_locked(struct kbase_jd_atom *katom) kbase_jd_dep_clear_locked() argument
161 kbase_jd_free_external_resources(struct kbase_jd_atom *katom) kbase_jd_free_external_resources() argument
174 kbase_jd_post_external_resources(struct kbase_jd_atom *katom) kbase_jd_post_external_resources() argument
210 kbase_jd_pre_external_resources(struct kbase_jd_atom *katom, const struct base_jd_atom *user_atom) kbase_jd_pre_external_resources() argument
406 jd_resolve_dep(struct list_head *out_list, struct kbase_jd_atom *katom, u8 d, bool ctx_is_dying) jd_resolve_dep() argument
489 is_dep_valid(struct kbase_jd_atom *katom) is_dep_valid() argument
576 jd_update_jit_usage(struct kbase_jd_atom *katom) jd_update_jit_usage() argument
716 jd_done_nolock(struct kbase_jd_atom *katom, struct list_head *completed_jobs_ctx) jd_done_nolock() argument
892 jd_trace_atom_submit(struct kbase_context *const kctx, struct kbase_jd_atom *const katom, int *priority) jd_trace_atom_submit() argument
906 jd_submit_atom(struct kbase_context *const kctx, const struct base_jd_atom *const user_atom, const struct base_jd_fragment *const user_jc_incr, struct kbase_jd_atom *const katom) jd_submit_atom() argument
1283 struct kbase_jd_atom *katom; kbase_jd_submit() local
1417 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); kbase_jd_done_worker() local
1605 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); jd_cancel_worker() local
1669 kbase_jd_done(struct kbase_jd_atom *katom, int slot_nr, ktime_t *end_timestamp, kbasep_js_atom_done_code done_code) kbase_jd_done() argument
1706 kbase_jd_cancel(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_jd_cancel() argument
1732 struct kbase_jd_atom *katom; kbase_jd_zap_context() local
[all...]
H A Dmali_kbase_softjobs.c49 static void kbasep_add_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_add_waiting_soft_job() argument
51 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_soft_job()
55 list_add_tail(&katom->queue, &kctx->waiting_soft_jobs); in kbasep_add_waiting_soft_job()
59 void kbasep_remove_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_remove_waiting_soft_job() argument
61 struct kbase_context *kctx = katom->kctx; in kbasep_remove_waiting_soft_job()
65 list_del(&katom->queue); in kbasep_remove_waiting_soft_job()
69 static void kbasep_add_waiting_with_timeout(struct kbase_jd_atom *katom) in kbasep_add_waiting_with_timeout() argument
71 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_with_timeout()
76 katom->start_timestamp = ktime_get(); in kbasep_add_waiting_with_timeout()
81 kbasep_add_waiting_soft_job(katom); in kbasep_add_waiting_with_timeout()
132 kbase_dump_cpu_gpu_time(struct kbase_jd_atom *katom) kbase_dump_cpu_gpu_time() argument
209 kbase_soft_event_wait_callback(struct kbase_jd_atom *katom) kbase_soft_event_wait_callback() argument
224 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, kbasep_soft_event_complete_job() local
245 struct kbase_jd_atom *katom = list_entry( kbasep_complete_triggered_soft_events() local
282 kbase_fence_debug_check_atom(struct kbase_jd_atom *katom) kbase_fence_debug_check_atom() argument
316 kbase_fence_debug_wait_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_wait_timeout() argument
349 struct kbase_jd_atom *katom; global() member
357 struct kbase_jd_atom *katom = w->katom; kbase_fence_debug_wait_timeout_worker() local
367 kbase_fence_debug_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_timeout() argument
398 struct kbase_jd_atom *katom = list_entry(entry, kbasep_soft_job_timeout_worker() local
432 kbasep_soft_event_wait(struct kbase_jd_atom *katom) kbasep_soft_event_wait() argument
451 kbasep_soft_event_update_locked(struct kbase_jd_atom *katom, unsigned char new_status) kbasep_soft_event_update_locked() argument
498 kbasep_soft_event_cancel_job(struct kbase_jd_atom *katom) kbasep_soft_event_cancel_job() argument
505 kbase_debug_copy_finish(struct kbase_jd_atom *katom) kbase_debug_copy_finish() argument
551 kbase_debug_copy_prepare(struct kbase_jd_atom *katom) kbase_debug_copy_prepare() argument
860 kbase_debug_copy(struct kbase_jd_atom *katom) kbase_debug_copy() argument
956 kbase_jit_allocate_prepare(struct kbase_jd_atom *katom) kbase_jit_allocate_prepare() argument
1042 kbase_jit_free_get_ids(struct kbase_jd_atom *katom) kbase_jit_free_get_ids() argument
1051 kbase_jit_add_to_pending_alloc_list(struct kbase_jd_atom *katom) kbase_jit_add_to_pending_alloc_list() argument
1070 kbase_jit_allocate_process(struct kbase_jd_atom *katom) kbase_jit_allocate_process() argument
1248 kbase_jit_allocate_finish(struct kbase_jd_atom *katom) kbase_jit_allocate_finish() argument
1270 kbase_jit_free_prepare(struct kbase_jd_atom *katom) kbase_jit_free_prepare() argument
1326 kbase_jit_free_process(struct kbase_jd_atom *katom) kbase_jit_free_process() argument
1351 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, kbasep_jit_finish_worker() local
1389 kbase_jit_free_finish(struct kbase_jd_atom *katom) kbase_jit_free_finish() argument
1428 kbase_ext_res_prepare(struct kbase_jd_atom *katom) kbase_ext_res_prepare() argument
1467 kbase_ext_res_process(struct kbase_jd_atom *katom, bool map) kbase_ext_res_process() argument
1525 kbase_ext_res_finish(struct kbase_jd_atom *katom) kbase_ext_res_finish() argument
1534 kbase_process_soft_job(struct kbase_jd_atom *katom) kbase_process_soft_job() argument
1608 kbase_cancel_soft_job(struct kbase_jd_atom *katom) kbase_cancel_soft_job() argument
1625 kbase_prepare_soft_job(struct kbase_jd_atom *katom) kbase_prepare_soft_job() argument
1717 kbase_finish_soft_job(struct kbase_jd_atom *katom) kbase_finish_soft_job() argument
[all...]
H A Dmali_kbase_dma_fence.c41 kbase_dma_fence_waiters_add(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_add() argument
43 struct kbase_context *kctx = katom->kctx; in kbase_dma_fence_waiters_add()
45 list_add_tail(&katom->queue, &kctx->dma_fence.waiting_resource); in kbase_dma_fence_waiters_add()
49 kbase_dma_fence_waiters_remove(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_remove() argument
51 list_del(&katom->queue); in kbase_dma_fence_waiters_remove()
120 * kbase_dma_fence_queue_work() - Queue work to handle @katom
121 * @katom: Pointer to atom for which to queue work
123 * Queue kbase_dma_fence_work() for @katom to clean up the fence callbacks and
127 kbase_dma_fence_queue_work(struct kbase_jd_atom *katom) in kbase_dma_fence_queue_work() argument
129 struct kbase_context *kctx = katom in kbase_dma_fence_queue_work()
145 kbase_dma_fence_cancel_atom(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_atom() argument
178 struct kbase_jd_atom *katom; kbase_dma_fence_work() local
217 struct kbase_jd_atom *katom = kcb->katom; kbase_dma_fence_cb() local
230 kbase_dma_fence_add_reservation_callback(struct kbase_jd_atom *katom, struct reservation_object *resv, bool exclusive) kbase_dma_fence_add_reservation_callback() argument
336 kbase_dma_fence_wait(struct kbase_jd_atom *katom, struct kbase_dma_fence_resv_info *info) kbase_dma_fence_wait() argument
447 struct kbase_jd_atom *katom; kbase_dma_fence_cancel_all_atoms() local
455 kbase_dma_fence_cancel_callbacks(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_callbacks() argument
462 kbase_dma_fence_signal(struct kbase_jd_atom *katom) kbase_dma_fence_signal() argument
[all...]
H A Dmali_kbase_sync_file.c62 int kbase_sync_fence_out_create(struct kbase_jd_atom *katom, int stream_fd) in kbase_sync_fence_out_create() argument
72 fence = kbase_fence_out_new(katom); in kbase_sync_fence_out_create()
91 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
98 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
107 int kbase_sync_fence_in_from_fd(struct kbase_jd_atom *katom, int fd) in kbase_sync_fence_in_from_fd() argument
118 kbase_fence_fence_in_set(katom, fence); in kbase_sync_fence_in_from_fd()
142 kbase_sync_fence_out_trigger(struct kbase_jd_atom *katom, int result) in kbase_sync_fence_out_trigger() argument
146 if (!kbase_fence_out_is_ours(katom)) { in kbase_sync_fence_out_trigger()
151 res = kbase_fence_out_signal(katom, result); in kbase_sync_fence_out_trigger()
153 dev_warn(katom in kbase_sync_fence_out_trigger()
173 struct kbase_jd_atom *katom = kcb->katom; kbase_fence_wait_callback() local
202 kbase_sync_fence_in_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_wait() argument
247 kbase_sync_fence_in_cancel_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_cancel_wait() argument
269 kbase_sync_fence_out_remove(struct kbase_jd_atom *katom) kbase_sync_fence_out_remove() argument
274 kbase_sync_fence_in_remove(struct kbase_jd_atom *katom) kbase_sync_fence_in_remove() argument
325 kbase_sync_fence_in_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_in_info_get() argument
345 kbase_sync_fence_out_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_out_info_get() argument
367 kbase_sync_fence_in_dump(struct kbase_jd_atom *katom) kbase_sync_fence_in_dump() argument
[all...]
H A Dmali_kbase_fence.h46 * @katom: Pointer to katom that is waiting on this callback
48 * @node: List head for linking this callback to the katom
58 struct kbase_jd_atom *katom; member
64 * @katom: Atom to create an output fence for
69 struct fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
71 struct dma_fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
77 * @katom: Atom to assign input fence to
82 #define kbase_fence_fence_in_set(katom, fence) \
84 WARN_ON((katom)
97 kbase_fence_out_remove(struct kbase_jd_atom *katom) kbase_fence_out_remove() argument
112 kbase_fence_in_remove(struct kbase_jd_atom *katom) kbase_fence_in_remove() argument
127 kbase_fence_out_is_ours(struct kbase_jd_atom *katom) kbase_fence_out_is_ours() argument
140 kbase_fence_out_signal(struct kbase_jd_atom *katom, int status) kbase_fence_out_signal() argument
204 kbase_fence_dep_count_set(struct kbase_jd_atom *katom, int val) kbase_fence_dep_count_set() argument
218 kbase_fence_dep_count_dec_and_test(struct kbase_jd_atom *katom) kbase_fence_dep_count_dec_and_test() argument
231 kbase_fence_dep_count_read(struct kbase_jd_atom *katom) kbase_fence_dep_count_read() argument
[all...]
H A Dmali_kbase_sync_android.c214 int kbase_sync_fence_out_create(struct kbase_jd_atom *katom, int tl_fd) in kbase_sync_fence_out_create() argument
258 katom->fence = sync_fence_fdget(fd); in kbase_sync_fence_out_create()
259 if (katom->fence == NULL) { in kbase_sync_fence_out_create()
273 int kbase_sync_fence_in_from_fd(struct kbase_jd_atom *katom, int fd) in kbase_sync_fence_in_from_fd() argument
275 katom->fence = sync_fence_fdget(fd); in kbase_sync_fence_in_from_fd()
276 return katom->fence ? 0 : -ENOENT; in kbase_sync_fence_in_from_fd()
343 kbase_sync_fence_out_trigger(struct kbase_jd_atom *katom, int result) in kbase_sync_fence_out_trigger() argument
348 if (!katom->fence) in kbase_sync_fence_out_trigger()
351 if (katom->fence->num_fences != 1) { in kbase_sync_fence_out_trigger()
358 pt = container_of(katom in kbase_sync_fence_out_trigger()
386 struct kbase_jd_atom *katom = container_of(waiter, kbase_fence_wait_callback() local
408 kbase_sync_fence_in_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_wait() argument
433 kbase_sync_fence_in_cancel_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_cancel_wait() argument
452 kbase_sync_fence_out_remove(struct kbase_jd_atom *katom) kbase_sync_fence_out_remove() argument
460 kbase_sync_fence_in_remove(struct kbase_jd_atom *katom) kbase_sync_fence_in_remove() argument
468 kbase_sync_fence_in_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_in_info_get() argument
481 kbase_sync_fence_out_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_out_info_get() argument
495 kbase_sync_fence_in_dump(struct kbase_jd_atom *katom) kbase_sync_fence_in_dump() argument
[all...]
/device/soc/rockchip/common/vendor/drivers/gpu/arm/bifrost/
H A Dmali_kbase_jd.c50 /* Return whether katom will run on the GPU or not. Currently only soft jobs and
52 #define IS_GPU_ATOM(katom) \
53 (!(((katom)->core_req & BASE_JD_REQ_SOFT_JOB) || (((katom)->core_req & BASE_JD_REQ_ATOM_TYPE) == BASE_JD_REQ_DEP)))
76 static void jd_mark_atom_complete(struct kbase_jd_atom *katom) in jd_mark_atom_complete() argument
78 katom->status = KBASE_JD_ATOM_STATE_COMPLETED; in jd_mark_atom_complete()
79 kbase_kinstr_jm_atom_complete(katom); in jd_mark_atom_complete()
80 dev_dbg(katom->kctx->kbdev->dev, "Atom %p status to completed\n", (void *)katom); in jd_mark_atom_complete()
90 static bool jd_run_atom(struct kbase_jd_atom *katom) in jd_run_atom() argument
123 kbase_jd_dep_clear_locked(struct kbase_jd_atom *katom) kbase_jd_dep_clear_locked() argument
153 kbase_jd_free_external_resources(struct kbase_jd_atom *katom) kbase_jd_free_external_resources() argument
167 kbase_jd_post_external_resources(struct kbase_jd_atom *katom) kbase_jd_post_external_resources() argument
201 kbase_jd_pre_external_resources(struct kbase_jd_atom *katom, const struct base_jd_atom *user_atom) kbase_jd_pre_external_resources() argument
386 jd_resolve_dep(struct list_head *out_list, struct kbase_jd_atom *katom, u8 d, bool ctx_is_dying) jd_resolve_dep() argument
462 is_dep_valid(struct kbase_jd_atom *katom) is_dep_valid() argument
546 jd_update_jit_usage(struct kbase_jd_atom *katom) jd_update_jit_usage() argument
673 jd_done_nolock(struct kbase_jd_atom *katom, struct list_head *completed_jobs_ctx) jd_done_nolock() argument
833 jd_trace_atom_submit(struct kbase_context *const kctx, struct kbase_jd_atom *const katom, int *priority) jd_trace_atom_submit() argument
846 jd_submit_atom(struct kbase_context *const kctx, const struct base_jd_atom *const user_atom, const struct base_jd_fragment *const user_jc_incr, struct kbase_jd_atom *const katom) jd_submit_atom() argument
1194 struct kbase_jd_atom *katom; kbase_jd_submit() local
1319 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); kbase_jd_done_worker() local
1497 struct kbase_jd_atom *katom = container_of(data, struct kbase_jd_atom, work); jd_cancel_worker() local
1561 kbase_jd_done(struct kbase_jd_atom *katom, int slot_nr, ktime_t *end_timestamp, kbasep_js_atom_done_code done_code) kbase_jd_done() argument
1598 kbase_jd_cancel(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_jd_cancel() argument
1623 struct kbase_jd_atom *katom; kbase_jd_zap_context() local
[all...]
H A Dmali_kbase_softjobs.c52 static void kbasep_add_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_add_waiting_soft_job() argument
54 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_soft_job()
58 list_add_tail(&katom->queue, &kctx->waiting_soft_jobs); in kbasep_add_waiting_soft_job()
62 void kbasep_remove_waiting_soft_job(struct kbase_jd_atom *katom) in kbasep_remove_waiting_soft_job() argument
64 struct kbase_context *kctx = katom->kctx; in kbasep_remove_waiting_soft_job()
68 list_del(&katom->queue); in kbasep_remove_waiting_soft_job()
72 static void kbasep_add_waiting_with_timeout(struct kbase_jd_atom *katom) in kbasep_add_waiting_with_timeout() argument
74 struct kbase_context *kctx = katom->kctx; in kbasep_add_waiting_with_timeout()
79 katom->start_timestamp = ktime_get(); in kbasep_add_waiting_with_timeout()
84 kbasep_add_waiting_soft_job(katom); in kbasep_add_waiting_with_timeout()
131 kbase_dump_cpu_gpu_time(struct kbase_jd_atom *katom) kbase_dump_cpu_gpu_time() argument
199 kbase_soft_event_wait_callback(struct kbase_jd_atom *katom) kbase_soft_event_wait_callback() argument
215 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, work); kbasep_soft_event_complete_job() local
237 struct kbase_jd_atom *katom = list_entry(entry, struct kbase_jd_atom, queue); kbasep_complete_triggered_soft_events() local
272 kbase_fence_debug_check_atom(struct kbase_jd_atom *katom) kbase_fence_debug_check_atom() argument
302 kbase_fence_debug_wait_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_wait_timeout() argument
331 struct kbase_jd_atom *katom; global() member
338 struct kbase_jd_atom *katom = w->katom; kbase_fence_debug_wait_timeout_worker() local
348 kbase_fence_debug_timeout(struct kbase_jd_atom *katom) kbase_fence_debug_timeout() argument
378 struct kbase_jd_atom *katom = list_entry(entry, struct kbase_jd_atom, queue); kbasep_soft_job_timeout_worker() local
410 kbasep_soft_event_wait(struct kbase_jd_atom *katom) kbasep_soft_event_wait() argument
430 kbasep_soft_event_update_locked(struct kbase_jd_atom *katom, unsigned char new_status) kbasep_soft_event_update_locked() argument
476 kbasep_soft_event_cancel_job(struct kbase_jd_atom *katom) kbasep_soft_event_cancel_job() argument
484 kbase_debug_copy_finish(struct kbase_jd_atom *katom) kbase_debug_copy_finish() argument
533 kbase_debug_copy_prepare(struct kbase_jd_atom *katom) kbase_debug_copy_prepare() argument
826 kbase_debug_copy(struct kbase_jd_atom *katom) kbase_debug_copy() argument
931 kbase_jit_allocate_prepare(struct kbase_jd_atom *katom) kbase_jit_allocate_prepare() argument
1014 kbase_jit_free_get_ids(struct kbase_jd_atom *katom) kbase_jit_free_get_ids() argument
1023 kbase_jit_add_to_pending_alloc_list(struct kbase_jd_atom *katom) kbase_jit_add_to_pending_alloc_list() argument
1044 kbase_jit_allocate_process(struct kbase_jd_atom *katom) kbase_jit_allocate_process() argument
1213 kbase_jit_allocate_finish(struct kbase_jd_atom *katom) kbase_jit_allocate_finish() argument
1236 kbase_jit_free_prepare(struct kbase_jd_atom *katom) kbase_jit_free_prepare() argument
1293 kbase_jit_free_process(struct kbase_jd_atom *katom) kbase_jit_free_process() argument
1318 struct kbase_jd_atom *katom = container_of(work, struct kbase_jd_atom, work); kbasep_jit_finish_worker() local
1354 kbase_jit_free_finish(struct kbase_jd_atom *katom) kbase_jit_free_finish() argument
1390 kbase_ext_res_prepare(struct kbase_jd_atom *katom) kbase_ext_res_prepare() argument
1447 kbase_ext_res_process(struct kbase_jd_atom *katom, bool map) kbase_ext_res_process() argument
1504 kbase_ext_res_finish(struct kbase_jd_atom *katom) kbase_ext_res_finish() argument
1513 kbase_process_soft_job(struct kbase_jd_atom *katom) kbase_process_soft_job() argument
1584 kbase_cancel_soft_job(struct kbase_jd_atom *katom) kbase_cancel_soft_job() argument
1601 kbase_prepare_soft_job(struct kbase_jd_atom *katom) kbase_prepare_soft_job() argument
1685 kbase_finish_soft_job(struct kbase_jd_atom *katom) kbase_finish_soft_job() argument
[all...]
H A Dmali_kbase_dma_fence.c40 static void kbase_dma_fence_waiters_add(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_add() argument
42 struct kbase_context *kctx = katom->kctx; in kbase_dma_fence_waiters_add()
44 list_add_tail(&katom->queue, &kctx->dma_fence.waiting_resource); in kbase_dma_fence_waiters_add()
47 static void kbase_dma_fence_waiters_remove(struct kbase_jd_atom *katom) in kbase_dma_fence_waiters_remove() argument
49 list_del(&katom->queue); in kbase_dma_fence_waiters_remove()
117 * kbase_dma_fence_queue_work() - Queue work to handle @katom
118 * @katom: Pointer to atom for which to queue work
120 * Queue kbase_dma_fence_work() for @katom to clean up the fence callbacks and
123 static void kbase_dma_fence_queue_work(struct kbase_jd_atom *katom) in kbase_dma_fence_queue_work() argument
125 struct kbase_context *kctx = katom in kbase_dma_fence_queue_work()
140 kbase_dma_fence_cancel_atom(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_atom() argument
173 struct kbase_jd_atom *katom; kbase_dma_fence_work() local
212 struct kbase_jd_atom *katom = kcb->katom; kbase_dma_fence_cb() local
225 kbase_dma_fence_add_reservation_callback(struct kbase_jd_atom *katom, struct reservation_object *resv, bool exclusive) kbase_dma_fence_add_reservation_callback() argument
315 kbase_dma_fence_wait(struct kbase_jd_atom *katom, struct kbase_dma_fence_resv_info *info) kbase_dma_fence_wait() argument
408 struct kbase_jd_atom *katom; kbase_dma_fence_cancel_all_atoms() local
416 kbase_dma_fence_cancel_callbacks(struct kbase_jd_atom *katom) kbase_dma_fence_cancel_callbacks() argument
424 kbase_dma_fence_signal(struct kbase_jd_atom *katom) kbase_dma_fence_signal() argument
[all...]
H A Dmali_kbase_sync_file.c62 int kbase_sync_fence_out_create(struct kbase_jd_atom *katom, int tl_fd) in kbase_sync_fence_out_create() argument
72 fence = kbase_fence_out_new(katom); in kbase_sync_fence_out_create()
92 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
99 kbase_fence_out_remove(katom); in kbase_sync_fence_out_create()
108 int kbase_sync_fence_in_from_fd(struct kbase_jd_atom *katom, int fd) in kbase_sync_fence_in_from_fd() argument
120 kbase_fence_fence_in_set(katom, fence); in kbase_sync_fence_in_from_fd()
144 enum base_jd_event_code kbase_sync_fence_out_trigger(struct kbase_jd_atom *katom, int result) in kbase_sync_fence_out_trigger() argument
148 if (!kbase_fence_out_is_ours(katom)) { in kbase_sync_fence_out_trigger()
153 res = kbase_fence_out_signal(katom, result); in kbase_sync_fence_out_trigger()
155 dev_warn(katom in kbase_sync_fence_out_trigger()
173 struct kbase_jd_atom *katom = kcb->katom; kbase_fence_wait_callback() local
202 kbase_sync_fence_in_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_wait() argument
248 kbase_sync_fence_in_cancel_wait(struct kbase_jd_atom *katom) kbase_sync_fence_in_cancel_wait() argument
270 kbase_sync_fence_out_remove(struct kbase_jd_atom *katom) kbase_sync_fence_out_remove() argument
275 kbase_sync_fence_in_remove(struct kbase_jd_atom *katom) kbase_sync_fence_in_remove() argument
327 kbase_sync_fence_in_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_in_info_get() argument
348 kbase_sync_fence_out_info_get(struct kbase_jd_atom *katom, struct kbase_sync_fence_info *info) kbase_sync_fence_out_info_get() argument
370 kbase_sync_fence_in_dump(struct kbase_jd_atom *katom) kbase_sync_fence_in_dump() argument
[all...]
H A Dmali_kbase_fence.h47 * @katom: Pointer to katom that is waiting on this callback
49 * @node: List head for linking this callback to the katom
59 struct kbase_jd_atom *katom; member
65 * @katom: Atom to create an output fence for
70 struct fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
72 struct dma_fence *kbase_fence_out_new(struct kbase_jd_atom *katom);
78 * @katom: Atom to assign input fence to
83 #define kbase_fence_fence_in_set(katom, fence) \
85 WARN_ON((katom)
97 kbase_fence_out_remove(struct kbase_jd_atom *katom) kbase_fence_out_remove() argument
112 kbase_fence_in_remove(struct kbase_jd_atom *katom) kbase_fence_in_remove() argument
127 kbase_fence_out_is_ours(struct kbase_jd_atom *katom) kbase_fence_out_is_ours() argument
139 kbase_fence_out_signal(struct kbase_jd_atom *katom, int status) kbase_fence_out_signal() argument
196 kbase_fence_dep_count_set(struct kbase_jd_atom *katom, int val) kbase_fence_dep_count_set() argument
209 kbase_fence_dep_count_dec_and_test(struct kbase_jd_atom *katom) kbase_fence_dep_count_dec_and_test() argument
222 kbase_fence_dep_count_read(struct kbase_jd_atom *katom) kbase_fence_dep_count_read() argument
[all...]
/device/soc/rockchip/common/vendor/drivers/gpu/arm/midgard/backend/gpu/
H A Dmali_kbase_jm_rb.c40 static void kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp);
45 * @katom: Atom to enqueue
49 static void kbase_gpu_enqueue_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) in kbase_gpu_enqueue_atom() argument
51 struct slot_rb *rb = &kbdev->hwaccess.backend.slot_rb[katom->slot_nr]; in kbase_gpu_enqueue_atom()
57 rb->entries[rb->write_idx & SLOT_RB_MASK].katom = katom; in kbase_gpu_enqueue_atom()
60 katom->gpu_rb_state = KBASE_ATOM_GPU_RB_WAITING_BLOCKED; in kbase_gpu_enqueue_atom()
78 struct kbase_jd_atom *katom; in kbase_gpu_dequeue_atom() local
87 katom = rb->entries[rb->read_idx & SLOT_RB_MASK].katom; in kbase_gpu_dequeue_atom()
145 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted() local
174 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted_any() local
192 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_backend_nr_atoms_submitted() local
226 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_nr_atoms_on_slot_min() local
245 check_secure_atom(struct kbase_jd_atom *katom, bool secure) check_secure_atom() argument
271 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_check_secure_atoms() local
296 kbasep_js_job_check_ref_cores(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom) kbasep_js_job_check_ref_cores() argument
470 kbasep_js_job_check_deref_cores(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbasep_js_job_check_deref_cores() argument
547 kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp) kbase_gpu_release_atom() argument
613 kbase_gpu_mark_atom_for_return(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_mark_atom_for_return() argument
728 kbase_jm_enter_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_enter_protected_mode() argument
834 kbase_jm_exit_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_exit_protected_mode() argument
921 struct kbase_jd_atom *katom[2]; kbase_backend_slot_update() local
1109 kbase_backend_run_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_run_atom() argument
1121 struct kbase_jd_atom *katom; kbase_gpu_irq_evict() local
1147 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, 0); kbase_gpu_complete_hw() local
1329 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, atom_idx); kbase_backend_reset() local
1384 kbase_gpu_stop_atom(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom, u32 action) kbase_gpu_stop_atom() argument
1393 kbase_gpu_remove_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, u32 action, bool disjoint) kbase_gpu_remove_atom() argument
1405 should_stop_x_dep_slot(struct kbase_jd_atom *katom) should_stop_x_dep_slot() argument
1418 kbase_job_evicted(struct kbase_jd_atom *katom) kbase_job_evicted() argument
1424 kbase_backend_soft_hard_stop_slot(struct kbase_device *kbdev, struct kbase_context *kctx, int js, struct kbase_jd_atom *katom, u32 action) kbase_backend_soft_hard_stop_slot() argument
1613 kbase_backend_cacheclean(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_cacheclean() argument
1627 kbase_backend_complete_wq(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_complete_wq() argument
1692 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, idx); kbase_gpu_dump_slots() local
[all...]
/device/soc/rockchip/common/kernel/drivers/gpu/arm/midgard/backend/gpu/
H A Dmali_kbase_jm_rb.c43 struct kbase_jd_atom *katom,
49 * @katom: Atom to enqueue
54 struct kbase_jd_atom *katom) in kbase_gpu_enqueue_atom()
56 struct slot_rb *rb = &kbdev->hwaccess.backend.slot_rb[katom->slot_nr]; in kbase_gpu_enqueue_atom()
62 rb->entries[rb->write_idx & SLOT_RB_MASK].katom = katom; in kbase_gpu_enqueue_atom()
65 katom->gpu_rb_state = KBASE_ATOM_GPU_RB_WAITING_BLOCKED; in kbase_gpu_enqueue_atom()
85 struct kbase_jd_atom *katom; in kbase_gpu_dequeue_atom() local
94 katom = rb->entries[rb->read_idx & SLOT_RB_MASK].katom; in kbase_gpu_dequeue_atom()
53 kbase_gpu_enqueue_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_enqueue_atom() argument
153 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted() local
181 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted_any() local
198 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_backend_nr_atoms_submitted() local
232 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_nr_atoms_on_slot_min() local
250 check_secure_atom(struct kbase_jd_atom *katom, bool secure) check_secure_atom() argument
278 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_gpu_check_secure_atoms() local
306 kbasep_js_job_check_ref_cores(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom) kbasep_js_job_check_ref_cores() argument
530 kbasep_js_job_check_deref_cores(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbasep_js_job_check_deref_cores() argument
623 kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp) kbase_gpu_release_atom() argument
698 kbase_gpu_mark_atom_for_return(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_mark_atom_for_return() argument
817 kbase_jm_enter_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_enter_protected_mode() argument
932 kbase_jm_exit_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_exit_protected_mode() argument
1026 struct kbase_jd_atom *katom[2]; kbase_backend_slot_update() local
1236 kbase_backend_run_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_run_atom() argument
1249 struct kbase_jd_atom *katom; kbase_gpu_irq_evict() local
1288 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, 0); kbase_gpu_complete_hw() local
1508 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_backend_reset() local
1566 kbase_gpu_stop_atom(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom, u32 action) kbase_gpu_stop_atom() argument
1579 kbase_gpu_remove_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, u32 action, bool disjoint) kbase_gpu_remove_atom() argument
1593 should_stop_x_dep_slot(struct kbase_jd_atom *katom) should_stop_x_dep_slot() argument
1607 kbase_job_evicted(struct kbase_jd_atom *katom) kbase_job_evicted() argument
1613 kbase_backend_soft_hard_stop_slot(struct kbase_device *kbdev, struct kbase_context *kctx, int js, struct kbase_jd_atom *katom, u32 action) kbase_backend_soft_hard_stop_slot() argument
1847 kbase_backend_cacheclean(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_cacheclean() argument
1863 kbase_backend_complete_wq(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_complete_wq() argument
1934 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_gpu_dump_slots() local
[all...]
/device/soc/rockchip/common/kernel/drivers/gpu/arm/bifrost/backend/gpu/
H A Dmali_kbase_jm_rb.c50 struct kbase_jd_atom *katom,
56 * @katom: Atom to enqueue
61 struct kbase_jd_atom *katom) in kbase_gpu_enqueue_atom()
63 struct slot_rb *rb = &kbdev->hwaccess.backend.slot_rb[katom->slot_nr]; in kbase_gpu_enqueue_atom()
69 rb->entries[rb->write_idx & SLOT_RB_MASK].katom = katom; in kbase_gpu_enqueue_atom()
72 katom->gpu_rb_state = KBASE_ATOM_GPU_RB_WAITING_BLOCKED; in kbase_gpu_enqueue_atom()
92 struct kbase_jd_atom *katom; in kbase_gpu_dequeue_atom() local
101 katom = rb->entries[rb->read_idx & SLOT_RB_MASK].katom; in kbase_gpu_dequeue_atom()
60 kbase_gpu_enqueue_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_enqueue_atom() argument
145 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted_any() local
162 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_backend_nr_atoms_submitted() local
196 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_nr_atoms_on_slot_min() local
214 check_secure_atom(struct kbase_jd_atom *katom, bool secure) check_secure_atom() argument
242 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_gpu_check_secure_atoms() local
269 kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp) kbase_gpu_release_atom() argument
385 kbase_gpu_mark_atom_for_return(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_mark_atom_for_return() argument
480 kbase_jm_protected_entry(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_protected_entry() argument
543 kbase_jm_enter_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_enter_protected_mode() argument
718 kbase_jm_exit_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_exit_protected_mode() argument
838 struct kbase_jd_atom *katom[2]; kbase_backend_slot_update() local
1044 kbase_backend_run_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_run_atom() argument
1106 struct kbase_jd_atom *katom; kbase_gpu_irq_evict() local
1181 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, 0); kbase_gpu_complete_hw() local
1394 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_backend_reset() local
1506 kbase_gpu_stop_atom(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom, u32 action) kbase_gpu_stop_atom() argument
1520 kbase_gpu_remove_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, u32 action, bool disjoint) kbase_gpu_remove_atom() argument
1539 should_stop_x_dep_slot(struct kbase_jd_atom *katom) should_stop_x_dep_slot() argument
1553 kbase_backend_soft_hard_stop_slot(struct kbase_device *kbdev, struct kbase_context *kctx, int js, struct kbase_jd_atom *katom, u32 action) kbase_backend_soft_hard_stop_slot() argument
1775 kbase_backend_cache_clean(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_cache_clean() argument
1787 kbase_backend_complete_wq(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_backend_complete_wq() argument
1822 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, kbase_gpu_dump_slots() local
[all...]
/device/soc/rockchip/common/vendor/drivers/gpu/arm/bifrost/backend/gpu/
H A Dmali_kbase_jm_rb.c48 static void kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp);
53 * @katom: Atom to enqueue
57 static void kbase_gpu_enqueue_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) in kbase_gpu_enqueue_atom() argument
59 struct slot_rb *rb = &kbdev->hwaccess.backend.slot_rb[katom->slot_nr]; in kbase_gpu_enqueue_atom()
65 rb->entries[rb->write_idx & SLOT_RB_MASK].katom = katom; in kbase_gpu_enqueue_atom()
68 katom->gpu_rb_state = KBASE_ATOM_GPU_RB_WAITING_BLOCKED; in kbase_gpu_enqueue_atom()
86 struct kbase_jd_atom *katom; in kbase_gpu_dequeue_atom() local
95 katom = rb->entries[rb->read_idx & SLOT_RB_MASK].katom; in kbase_gpu_dequeue_atom()
139 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_atoms_submitted_any() local
157 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_backend_nr_atoms_submitted() local
191 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_nr_atoms_on_slot_min() local
210 check_secure_atom(struct kbase_jd_atom *katom, bool secure) check_secure_atom() argument
236 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, i); kbase_gpu_check_secure_atoms() local
261 kbase_gpu_release_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, ktime_t *end_timestamp) kbase_gpu_release_atom() argument
358 kbase_gpu_mark_atom_for_return(struct kbase_device *kbdev, struct kbase_jd_atom *katom) kbase_gpu_mark_atom_for_return() argument
447 kbase_jm_protected_entry(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_protected_entry() argument
503 kbase_jm_enter_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_enter_protected_mode() argument
671 kbase_jm_exit_protected_mode(struct kbase_device *kbdev, struct kbase_jd_atom **katom, int idx, int js) kbase_jm_exit_protected_mode() argument
777 struct kbase_jd_atom *katom[2]; global() local
950 kbase_backend_run_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom) global() argument
964 struct kbase_jd_atom *katom; global() local
999 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, 0); global() local
1177 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, atom_idx); global() local
1237 kbase_gpu_stop_atom(struct kbase_device *kbdev, int js, struct kbase_jd_atom *katom, u32 action) global() argument
1246 kbase_gpu_remove_atom(struct kbase_device *kbdev, struct kbase_jd_atom *katom, u32 action, bool disjoint) global() argument
1260 should_stop_x_dep_slot(struct kbase_jd_atom *katom) global() argument
1273 kbase_backend_soft_hard_stop_slot(struct kbase_device *kbdev, struct kbase_context *kctx, int js, struct kbase_jd_atom *katom, u32 action) global() argument
1431 kbase_backend_cache_clean(struct kbase_device *kbdev, struct kbase_jd_atom *katom) global() argument
1441 kbase_backend_complete_wq(struct kbase_device *kbdev, struct kbase_jd_atom *katom) global() argument
1474 struct kbase_jd_atom *katom = kbase_gpu_inspect(kbdev, js, idx); global() local
[all...]

Completed in 17 milliseconds

123456