Lines Matching refs:utc
153 struct user_ta_ctx *utc = to_user_ta_ctx(session->ctx); in user_ta_enter() local
165 res = vm_map_param(&utc->uctx, ta_sess->param, param_va); in user_ta_enter()
174 usr_stack = utc->uctx.stack_ptr; in user_ta_enter()
187 utc->uctx.entry_func, utc->uctx.is_32bit, in user_ta_enter()
188 &utc->ta_ctx.panicked, in user_ta_enter()
189 &utc->ta_ctx.panic_code); in user_ta_enter()
191 thread_user_clear_vfp(&utc->uctx); in user_ta_enter()
193 if (utc->ta_ctx.panicked) { in user_ta_enter()
196 utc->ta_ctx.panic_code); in user_ta_enter()
217 vm_clean_param(&utc->uctx); in user_ta_enter()
260 static void dump_state_no_ldelf_dbg(struct user_ta_ctx *utc) in dump_state_no_ldelf_dbg() argument
262 user_mode_ctx_print_mappings(&utc->uctx); in dump_state_no_ldelf_dbg()
267 struct user_ta_ctx *utc = to_user_ta_ctx(ctx); in user_ta_dump_state() local
269 if (utc->uctx.dump_entry_func) { in user_ta_dump_state()
270 TEE_Result res = ldelf_dump_state(&utc->uctx); in user_ta_dump_state()
284 dump_state_no_ldelf_dbg(utc); in user_ta_dump_state()
291 struct user_ta_ctx *utc = to_user_ta_ctx(ctx); in user_ta_dump_ftrace() local
301 res = ldelf_dump_ftrace(&utc->uctx, NULL, &blen); in user_ta_dump_ftrace()
319 res = vm_map(&utc->uctx, &va, mobj->size, prot, VM_FLAG_EPHEMERAL, in user_ta_dump_ftrace()
333 res = ldelf_dump_ftrace(&utc->uctx, ubuf, &blen); in user_ta_dump_ftrace()
349 res = vm_unmap(&utc->uctx, va, mobj->size); in user_ta_dump_ftrace()
367 static void release_utc_state(struct user_ta_ctx *utc) in release_utc_state() argument
374 while (!TAILQ_EMPTY(&utc->open_sessions)) { in release_utc_state()
375 tee_ta_close_session(TAILQ_FIRST(&utc->open_sessions), in release_utc_state()
376 &utc->open_sessions, KERN_IDENTITY); in release_utc_state()
379 vm_info_final(&utc->uctx); in release_utc_state()
382 tee_svc_cryp_free_states(utc); in release_utc_state()
384 tee_obj_close_all(utc); in release_utc_state()
386 tee_svc_storage_close_all_enum(utc); in release_utc_state()
389 static void free_utc(struct user_ta_ctx *utc) in free_utc() argument
391 release_utc_state(utc); in free_utc()
392 free(utc); in free_utc()
459 struct user_ta_ctx *utc = NULL; in tee_ta_init_user_ta_session() local
467 utc = calloc(1, sizeof(struct user_ta_ctx)); in tee_ta_init_user_ta_session()
468 if (!utc) in tee_ta_init_user_ta_session()
472 res = crypto_rng_read(&utc->uctx.keys, sizeof(utc->uctx.keys)); in tee_ta_init_user_ta_session()
474 free(utc); in tee_ta_init_user_ta_session()
479 TAILQ_INIT(&utc->open_sessions); in tee_ta_init_user_ta_session()
480 TAILQ_INIT(&utc->cryp_states); in tee_ta_init_user_ta_session()
481 TAILQ_INIT(&utc->objects); in tee_ta_init_user_ta_session()
482 TAILQ_INIT(&utc->storage_enums); in tee_ta_init_user_ta_session()
483 condvar_init(&utc->ta_ctx.busy_cv); in tee_ta_init_user_ta_session()
484 utc->ta_ctx.ref_count = 1; in tee_ta_init_user_ta_session()
490 set_ta_ctx_ops(&utc->ta_ctx); in tee_ta_init_user_ta_session()
492 utc->ta_ctx.ts_ctx.uuid = *uuid; in tee_ta_init_user_ta_session()
493 res = vm_info_init(&utc->uctx, &utc->ta_ctx.ts_ctx); in tee_ta_init_user_ta_session()
495 condvar_destroy(&utc->ta_ctx.busy_cv); in tee_ta_init_user_ta_session()
496 free_utc(utc); in tee_ta_init_user_ta_session()
500 utc->ta_ctx.is_initializing = true; in tee_ta_init_user_ta_session()
504 s->ts_sess.ctx = &utc->ta_ctx.ts_ctx; in tee_ta_init_user_ta_session()
511 TAILQ_INSERT_TAIL(&tee_ctxes, &utc->ta_ctx, link); in tee_ta_init_user_ta_session()
518 struct user_ta_ctx *utc = to_user_ta_ctx(s->ts_sess.ctx); in tee_ta_complete_user_ta_session() local
527 res = ldelf_load_ldelf(&utc->uctx); in tee_ta_complete_user_ta_session()
529 res = ldelf_init_with_ldelf(&s->ts_sess, &utc->uctx); in tee_ta_complete_user_ta_session()
536 utc->ta_ctx.is_initializing = false; in tee_ta_complete_user_ta_session()
539 TAILQ_REMOVE(&tee_ctxes, &utc->ta_ctx, link); in tee_ta_complete_user_ta_session()
540 condvar_destroy(&utc->ta_ctx.busy_cv); in tee_ta_complete_user_ta_session()
541 free_utc(utc); in tee_ta_complete_user_ta_session()