/linux/tools/testing/selftests/sgx/ |
H A D | load.c | 22 void encl_delete(struct encl *encl) in encl_delete() argument 26 if (encl->encl_base) in encl_delete() 27 munmap((void *)encl->encl_base, encl->encl_size); in encl_delete() 29 if (encl->bin) in encl_delete() 30 munmap(encl->bin, encl->bin_size); in encl_delete() 32 if (encl->fd) in encl_delete() 33 close(encl->fd); in encl_delete() 35 if (encl->segment_tbl) { in encl_delete() 36 heap_seg = &encl->segment_tbl[encl->nr_segments - 1]; in encl_delete() 38 free(encl->segment_tbl); in encl_delete() [all …]
|
H A D | main.c | 137 static off_t encl_get_tcs_offset(struct encl *encl) in encl_get_tcs_offset() argument 141 for (i = 0; i < encl->nr_segments; i++) { in encl_get_tcs_offset() 142 struct encl_segment *seg = &encl->segment_tbl[i]; in encl_get_tcs_offset() 156 static off_t encl_get_data_offset(struct encl *encl) in encl_get_data_offset() argument 160 for (i = 1; i < encl->nr_segments; i++) { in encl_get_data_offset() 161 struct encl_segment *seg = &encl->segment_tbl[i]; in encl_get_data_offset() 171 struct encl encl; in FIXTURE() local 175 static bool setup_test_encl(unsigned long heap_size, struct encl *encl, in setup_test_encl() argument 186 if (!encl_load("test_encl.elf", encl, heap_size)) { in setup_test_encl() 187 encl_delete(encl); in setup_test_encl() [all …]
|
H A D | main.h | 20 struct encl { struct 37 void encl_delete(struct encl *ctx); argument 38 bool encl_load(const char *path, struct encl *encl, unsigned long heap_size); 39 bool encl_measure(struct encl *encl); 40 bool encl_build(struct encl *encl); 41 uint64_t encl_get_entry(struct encl *encl, const char *symbol);
|
H A D | sigstruct.c | 295 static bool mrenclave_segment(EVP_MD_CTX *ctx, struct encl *encl, in mrenclave_segment() 314 bool encl_measure(struct encl *encl) in encl_measure() 318 struct sgx_sigstruct *sigstruct = &encl->sigstruct; in encl_measure() 352 if (!mrenclave_ecreate(ctx, encl->src_size)) in encl_measure() 355 for (i = 0; i < encl->nr_segments; i++) { in encl_measure() 356 struct encl_segment *seg = &encl->segment_tbl[i]; in encl_measure() 358 if (!mrenclave_segment(ctx, encl, seg)) in encl_measure() 294 mrenclave_segment(EVP_MD_CTX * ctx,struct encl * encl,struct encl_segment * seg) mrenclave_segment() argument 313 encl_measure(struct encl * encl) encl_measure() argument
|
/linux/arch/x86/kernel/cpu/sgx/ |
H A D | encl.c | 15 static int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index, 58 static int reclaimer_writing_to_pcmd(struct sgx_encl *encl, in reclaimer_writing_to_pcmd() argument 83 if (addr == encl->base + encl->size) in reclaimer_writing_to_pcmd() 86 entry = xa_load(&encl->page_array, PFN_DOWN(addr)); in reclaimer_writing_to_pcmd() 110 static inline pgoff_t sgx_encl_get_backing_page_pcmd_offset(struct sgx_encl *encl, in sgx_encl_get_backing_page_pcmd_offset() argument 113 pgoff_t epc_end_off = encl->size + sizeof(struct sgx_secs); in sgx_encl_get_backing_page_pcmd_offset() 121 static inline void sgx_encl_truncate_backing_page(struct sgx_encl *encl, unsigned long page_index) in sgx_encl_truncate_backing_page() argument 123 struct inode *inode = file_inode(encl->backing); in sgx_encl_truncate_backing_page() 137 struct sgx_encl *encl = encl_page->encl; in __sgx_encl_eldu() local 147 page_index = PFN_DOWN(encl_page->desc - encl_page->encl->base); in __sgx_encl_eldu() [all …]
|
H A D | ioctl.c | 20 struct sgx_va_page *sgx_encl_grow(struct sgx_encl *encl, bool reclaim) in sgx_encl_grow() argument 28 if (!(encl->page_cnt % SGX_VA_SLOT_COUNT)) { in sgx_encl_grow() 40 WARN_ON_ONCE(encl->page_cnt % SGX_VA_SLOT_COUNT); in sgx_encl_grow() 42 encl->page_cnt++; in sgx_encl_grow() 46 void sgx_encl_shrink(struct sgx_encl *encl, struct sgx_va_page *va_page) in sgx_encl_shrink() argument 48 encl->page_cnt--; in sgx_encl_shrink() 57 static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs) in sgx_encl_create() argument 74 va_page = sgx_encl_grow(encl, true); in sgx_encl_create() 78 list_add(&va_page->list, &encl->va_pages); in sgx_encl_create() 91 encl->backing = backing; in sgx_encl_create() [all …]
|
H A D | driver.c | 19 struct sgx_encl *encl; in sgx_open() local 22 encl = kzalloc(sizeof(*encl), GFP_KERNEL); in sgx_open() 23 if (!encl) in sgx_open() 26 kref_init(&encl->refcount); in sgx_open() 27 xa_init(&encl->page_array); in sgx_open() 28 mutex_init(&encl->lock); in sgx_open() 29 INIT_LIST_HEAD(&encl->va_pages); in sgx_open() 30 INIT_LIST_HEAD(&encl->mm_list); in sgx_open() 31 spin_lock_init(&encl->mm_lock); in sgx_open() 33 ret = init_srcu_struct(&encl->srcu); in sgx_open() [all …]
|
H A D | main.c | 113 struct sgx_encl *encl = page->encl; in sgx_reclaimer_age() local 118 idx = srcu_read_lock(&encl->srcu); in sgx_reclaimer_age() 120 list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) { in sgx_reclaimer_age() 134 srcu_read_unlock(&encl->srcu, idx); in sgx_reclaimer_age() 146 struct sgx_encl *encl = page->encl; in sgx_reclaimer_block() local 149 sgx_zap_enclave_ptes(encl, addr); in sgx_reclaimer_block() 151 mutex_lock(&encl->lock); in sgx_reclaimer_block() 157 mutex_unlock(&encl->lock); in sgx_reclaimer_block() 202 struct sgx_encl *encl = encl_page->encl; in sgx_encl_ewb() local 210 va_page = list_first_entry(&encl->va_pages, struct sgx_va_page, in sgx_encl_ewb() [all …]
|
H A D | encl.h | 33 struct sgx_encl *encl; member 45 struct sgx_encl *encl; member 103 int sgx_encl_may_map(struct sgx_encl *encl, unsigned long start, 108 int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm); 109 const cpumask_t *sgx_encl_cpumask(struct sgx_encl *encl); 110 int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index, 115 struct sgx_encl_page *sgx_encl_page_alloc(struct sgx_encl *encl, 118 void sgx_zap_enclave_ptes(struct sgx_encl *encl, unsigned long addr); 124 struct sgx_encl_page *sgx_encl_load_page(struct sgx_encl *encl, 126 struct sgx_va_page *sgx_encl_grow(struct sgx_encl *encl, bool reclaim); [all …]
|
H A D | Makefile | 3 encl.o \
|