| /optee_os/core/include/mm/ |
| H A D | fobj.h | 22 struct fobj { struct 41 void (*free)(struct fobj *fobj); 43 TEE_Result (*load_page)(struct fobj *fobj, unsigned int page_idx, 45 TEE_Result (*save_page)(struct fobj *fobj, unsigned int page_idx, 47 vaddr_t (*get_iv_vaddr)(struct fobj *fobj, unsigned int page_idx); 49 paddr_t (*get_pa)(struct fobj *fobj, unsigned int page_idx); 62 struct fobj *fobj_locked_paged_alloc(unsigned int num_pages); 73 struct fobj *fobj_rw_paged_alloc(unsigned int num_pages); 87 struct fobj *fobj_ro_paged_alloc(unsigned int num_pages, void *hashes, 106 struct fobj *fobj_ro_reloc_paged_alloc(unsigned int num_pages, void *hashes, [all …]
|
| H A D | tee_pager.h | 63 vaddr_t tee_pager_init_iv_region(struct fobj *fobj); 87 struct fobj *fobj); 103 struct fobj *fobj, uint32_t prot); 107 vaddr_t base __unused, struct fobj *fobj __unused, in tee_pager_add_um_region() 283 void tee_pager_invalidate_fobj(struct fobj *fobj);
|
| H A D | file.h | 23 struct fobj *fobj; member 65 TEE_Result file_add_slice(struct file *f, struct fobj *fobj,
|
| H A D | tee_mmu_types.h | 116 struct fobj *fobj; member
|
| H A D | mobj.h | 42 struct fobj *(*get_fobj)(struct mobj *mobj); 195 static inline struct fobj *mobj_get_fobj(struct mobj *mobj) in mobj_get_fobj() 385 struct mobj *mobj_with_fobj_alloc(struct fobj *fobj, struct file *file,
|
| /optee_os/core/mm/ |
| H A D | fobj.c | 52 struct fobj fobj; member 57 struct fobj fobj; member 68 static void fobj_init(struct fobj *fobj, const struct fobj_ops *ops, in fobj_init() argument 71 fobj->ops = ops; in fobj_init() 72 fobj->num_pages = num_pages; in fobj_init() 73 refcount_set(&fobj->refc, 1); in fobj_init() 74 TAILQ_INIT(&fobj->regions); in fobj_init() 77 static void fobj_uninit(struct fobj *fobj) in fobj_uninit() argument 79 assert(!refcount_val(&fobj->refc)); in fobj_uninit() 80 assert(TAILQ_EMPTY(&fobj->regions)); in fobj_uninit() [all …]
|
| H A D | file.c | 74 fobj_put(fse->slice.fobj); in file_free() 81 TEE_Result file_add_slice(struct file *f, struct fobj *fobj, in file_add_slice() argument 95 fse->slice.fobj = fobj_get(fobj); in file_add_slice() 96 if (!fse->slice.fobj || in file_add_slice() 97 ADD_OVERFLOW(page_offset, fse->slice.fobj->num_pages, &s)) { in file_add_slice() 98 fobj_put(fse->slice.fobj); in file_add_slice() 189 page_offset < fs->page_offset + fs->fobj->num_pages) in file_find_slice()
|
| H A D | mobj.c | 357 struct fobj *fobj; member 365 struct mobj *mobj_with_fobj_alloc(struct fobj *fobj, struct file *file, in mobj_with_fobj_alloc() argument 372 if (!fobj) in mobj_with_fobj_alloc() 383 m->mobj.size = fobj->num_pages * SMALL_PAGE_SIZE; in mobj_with_fobj_alloc() 385 m->fobj = fobj_get(fobj); in mobj_with_fobj_alloc() 417 fobj_put(m->fobj); in mobj_with_fobj_free() 422 static struct fobj *mobj_with_fobj_get_fobj(struct mobj *mobj) in mobj_with_fobj_get_fobj() 424 return fobj_get(to_mobj_with_fobj(mobj)->fobj); in mobj_with_fobj_get_fobj() 446 if (!f->fobj->ops->get_pa) { in mobj_with_fobj_get_pa() 451 p = f->fobj->ops->get_pa(f->fobj, offs / SMALL_PAGE_SIZE) + in mobj_with_fobj_get_pa() [all …]
|
| H A D | sub.mk | 2 srcs-y += fobj.c 3 cflags-fobj.c-$(CFG_CORE_PAGE_TAG_AND_IV) := -Wno-missing-noreturn
|
| H A D | vm.c | 338 struct fobj *fobj = mobj_get_fobj(mobj); in vm_map_pad() local 340 if (!fobj) { in vm_map_pad() 345 res = tee_pager_add_um_region(uctx, reg->va, fobj, prot); in vm_map_pad() 346 fobj_put(fobj); in vm_map_pad() 566 struct fobj *fobj = NULL; in vm_remap() local 579 fobj = mobj_get_fobj(r0->mobj); in vm_remap() 580 if (!fobj) in vm_remap() 616 if (!fobj) in vm_remap() 619 res = tee_pager_add_um_region(uctx, r->va, fobj, in vm_remap() 656 fobj_put(fobj); in vm_remap() [all …]
|
| /optee_os/core/arch/arm/mm/ |
| H A D | tee_pager.c | 55 struct fobj *fobj; member 286 if (pmem->fobj != reg->fobj) in pmem_is_covered_by_region() 322 assert(pmem->fobj && pmem->fobj_pgidx != INVALID_PGIDX); in pmem_get_region_tblidx() 486 assert(!pmem->fobj && pmem->fobj_pgidx == INVALID_PGIDX); in pmem_assign_fobj_page() 492 assert(p->fobj != reg->fobj || p->fobj_pgidx != fobj_pgidx); in pmem_assign_fobj_page() 494 pmem->fobj = reg->fobj; in pmem_assign_fobj_page() 500 pmem->fobj = NULL; in pmem_clear() 511 TAILQ_FOREACH(reg, &pmem->fobj->regions, fobj_link) { in pmem_unmap() 595 TAILQ_INSERT_TAIL(®->fobj->regions, reg, fobj_link); in region_insert() 626 struct fobj *fobj) in tee_pager_add_core_region() argument [all …]
|
| /optee_os/core/arch/arm/kernel/ |
| H A D | boot.c | 459 static struct fobj *ro_paged_alloc(tee_mm_entry_t *mm, void *hashes, in ro_paged_alloc() 489 struct fobj *fobj = NULL; in init_pager_runtime() local 598 fobj = ro_paged_alloc(mm, hashes, paged_store); in init_pager_runtime() 599 assert(fobj); in init_pager_runtime() 601 fobj); in init_pager_runtime() 602 fobj_put(fobj); in init_pager_runtime()
|
| H A D | secure_partition.c | 503 struct fobj *fobj = NULL; in load_binary_sp() local 516 fobj = fobj_sec_mem_alloc(bb_num_pages); in load_binary_sp() 517 mobj = mobj_with_fobj_alloc(fobj, NULL, TEE_MATTR_MEM_TYPE_TAGGED); in load_binary_sp() 518 fobj_put(fobj); in load_binary_sp() 709 struct fobj *f = NULL; in copy_and_map_fdt() 780 struct fobj *f = NULL; in create_and_map_boot_info() 1336 struct fobj *f = NULL; in handle_tpm_event_log()
|
| H A D | stmm_sp.c | 195 struct fobj *fobj = fobj_ta_mem_alloc(num_pgs); in alloc_and_map_sp_fobj() local 199 mobj = mobj_with_fobj_alloc(fobj, NULL, TEE_MATTR_MEM_TYPE_TAGGED); in alloc_and_map_sp_fobj() 200 fobj_put(fobj); in alloc_and_map_sp_fobj()
|
| /optee_os/core/kernel/ |
| H A D | thread.c | 539 struct fobj *fobj = NULL; in init_thread_stacks() local 551 fobj = fobj_locked_paged_alloc(num_pages); in init_thread_stacks() 555 PAGED_REGION_TYPE_LOCK, fobj); in init_thread_stacks() 556 fobj_put(fobj); in init_thread_stacks()
|
| H A D | ldelf_loader.c | 35 struct fobj *fobj = fobj_ta_mem_alloc(num_pgs); in alloc_and_map_fobj() local 36 struct mobj *mobj = mobj_with_fobj_alloc(fobj, NULL, in alloc_and_map_fobj() 40 fobj_put(fobj); in alloc_and_map_fobj()
|
| H A D | ldelf_syscalls.c | 48 struct fobj *f = NULL; in ldelf_syscall_map_zi() 372 num_pages > fs->fobj->num_pages) { in ldelf_syscall_map_bin() 383 mobj = mobj_with_fobj_alloc(fs->fobj, binh->f, in ldelf_syscall_map_bin() 396 struct fobj *f = fobj_ta_mem_alloc(num_pages); in ldelf_syscall_map_bin()
|
| /optee_os/core/pta/ |
| H A D | system.c | 149 struct fobj *f = NULL; in system_map_zi()
|