Symbol: encl
arch/x86/kernel/cpu/sgx/driver.c
103
struct sgx_encl *encl = file->private_data;
arch/x86/kernel/cpu/sgx/driver.c
106
ret = sgx_encl_may_map(encl, vma->vm_start, vma->vm_end, vma->vm_flags);
arch/x86/kernel/cpu/sgx/driver.c
110
ret = sgx_encl_mm_add(encl, vma->vm_mm);
arch/x86/kernel/cpu/sgx/driver.c
116
vma->vm_private_data = encl;
arch/x86/kernel/cpu/sgx/driver.c
19
struct sgx_encl *encl;
arch/x86/kernel/cpu/sgx/driver.c
22
encl = kzalloc_obj(*encl);
arch/x86/kernel/cpu/sgx/driver.c
23
if (!encl)
arch/x86/kernel/cpu/sgx/driver.c
26
kref_init(&encl->refcount);
arch/x86/kernel/cpu/sgx/driver.c
27
xa_init(&encl->page_array);
arch/x86/kernel/cpu/sgx/driver.c
28
mutex_init(&encl->lock);
arch/x86/kernel/cpu/sgx/driver.c
29
INIT_LIST_HEAD(&encl->va_pages);
arch/x86/kernel/cpu/sgx/driver.c
30
INIT_LIST_HEAD(&encl->mm_list);
arch/x86/kernel/cpu/sgx/driver.c
31
spin_lock_init(&encl->mm_lock);
arch/x86/kernel/cpu/sgx/driver.c
33
ret = init_srcu_struct(&encl->srcu);
arch/x86/kernel/cpu/sgx/driver.c
35
kfree(encl);
arch/x86/kernel/cpu/sgx/driver.c
39
file->private_data = encl;
arch/x86/kernel/cpu/sgx/driver.c
63
struct sgx_encl *encl = file->private_data;
arch/x86/kernel/cpu/sgx/driver.c
73
spin_lock(&encl->mm_lock);
arch/x86/kernel/cpu/sgx/driver.c
75
if (list_empty(&encl->mm_list)) {
arch/x86/kernel/cpu/sgx/driver.c
78
encl_mm = list_first_entry(&encl->mm_list,
arch/x86/kernel/cpu/sgx/driver.c
83
spin_unlock(&encl->mm_lock);
arch/x86/kernel/cpu/sgx/driver.c
89
synchronize_srcu(&encl->srcu);
arch/x86/kernel/cpu/sgx/driver.c
94
kref_put(&encl->refcount, sgx_encl_release);
arch/x86/kernel/cpu/sgx/driver.c
97
kref_put(&encl->refcount, sgx_encl_release);
arch/x86/kernel/cpu/sgx/encl.c
1001
static struct mem_cgroup *sgx_encl_get_mem_cgroup(struct sgx_encl *encl)
arch/x86/kernel/cpu/sgx/encl.c
1019
idx = srcu_read_lock(&encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
1021
list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/encl.c
1032
srcu_read_unlock(&encl->srcu, idx);
arch/x86/kernel/cpu/sgx/encl.c
1063
int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index,
arch/x86/kernel/cpu/sgx/encl.c
1066
struct mem_cgroup *encl_memcg = sgx_encl_get_mem_cgroup(encl);
arch/x86/kernel/cpu/sgx/encl.c
1070
ret = __sgx_encl_get_backing(encl, page_index, backing);
arch/x86/kernel/cpu/sgx/encl.c
1095
static int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
arch/x86/kernel/cpu/sgx/encl.c
1098
return __sgx_encl_get_backing(encl, page_index, backing);
arch/x86/kernel/cpu/sgx/encl.c
110
static inline pgoff_t sgx_encl_get_backing_page_pcmd_offset(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
113
pgoff_t epc_end_off = encl->size + sizeof(struct sgx_secs);
arch/x86/kernel/cpu/sgx/encl.c
1140
struct sgx_encl *encl = page->encl;
arch/x86/kernel/cpu/sgx/encl.c
1148
if (encl != vma->vm_private_data)
arch/x86/kernel/cpu/sgx/encl.c
1159
struct sgx_encl_page *sgx_encl_page_alloc(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
1170
encl_page->desc = encl->base + offset;
arch/x86/kernel/cpu/sgx/encl.c
1171
encl_page->encl = encl;
arch/x86/kernel/cpu/sgx/encl.c
1200
void sgx_zap_enclave_ptes(struct sgx_encl *encl, unsigned long addr)
arch/x86/kernel/cpu/sgx/encl.c
1208
mm_list_version = encl->mm_list_version;
arch/x86/kernel/cpu/sgx/encl.c
121
static inline void sgx_encl_truncate_backing_page(struct sgx_encl *encl, unsigned long page_index)
arch/x86/kernel/cpu/sgx/encl.c
1213
idx = srcu_read_lock(&encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
1215
list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/encl.c
1222
if (!ret && encl == vma->vm_private_data)
arch/x86/kernel/cpu/sgx/encl.c
123
struct inode *inode = file_inode(encl->backing);
arch/x86/kernel/cpu/sgx/encl.c
1230
srcu_read_unlock(&encl->srcu, idx);
arch/x86/kernel/cpu/sgx/encl.c
1231
} while (unlikely(encl->mm_list_version != mm_list_version));
arch/x86/kernel/cpu/sgx/encl.c
137
struct sgx_encl *encl = encl_page->encl;
arch/x86/kernel/cpu/sgx/encl.c
147
page_index = PFN_DOWN(encl_page->desc - encl_page->encl->base);
arch/x86/kernel/cpu/sgx/encl.c
149
page_index = PFN_DOWN(encl->size);
arch/x86/kernel/cpu/sgx/encl.c
15
static int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
arch/x86/kernel/cpu/sgx/encl.c
154
pcmd_first_page = PFN_PHYS(page_index & ~PCMD_FIRST_MASK) + encl->base;
arch/x86/kernel/cpu/sgx/encl.c
156
page_pcmd_off = sgx_encl_get_backing_page_pcmd_offset(encl, page_index);
arch/x86/kernel/cpu/sgx/encl.c
158
ret = sgx_encl_lookup_backing(encl, page_index, &b);
arch/x86/kernel/cpu/sgx/encl.c
196
sgx_encl_truncate_backing_page(encl, page_index);
arch/x86/kernel/cpu/sgx/encl.c
198
if (pcmd_page_empty && !reclaimer_writing_to_pcmd(encl, pcmd_first_page)) {
arch/x86/kernel/cpu/sgx/encl.c
199
sgx_encl_truncate_backing_page(encl, PFN_DOWN(page_pcmd_off));
arch/x86/kernel/cpu/sgx/encl.c
216
struct sgx_encl *encl = encl_page->encl;
arch/x86/kernel/cpu/sgx/encl.c
231
list_move(&encl_page->va_page->list, &encl->va_pages);
arch/x86/kernel/cpu/sgx/encl.c
243
static struct sgx_epc_page *sgx_encl_load_secs(struct sgx_encl *encl)
arch/x86/kernel/cpu/sgx/encl.c
245
struct sgx_epc_page *epc_page = encl->secs.epc_page;
arch/x86/kernel/cpu/sgx/encl.c
248
epc_page = sgx_encl_eldu(&encl->secs, NULL);
arch/x86/kernel/cpu/sgx/encl.c
253
static struct sgx_encl_page *__sgx_encl_load_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
266
epc_page = sgx_encl_load_secs(encl);
arch/x86/kernel/cpu/sgx/encl.c
270
epc_page = sgx_encl_eldu(entry, encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/encl.c
274
encl->secs_child_cnt++;
arch/x86/kernel/cpu/sgx/encl.c
280
static struct sgx_encl_page *sgx_encl_load_page_in_vma(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
287
entry = xa_load(&encl->page_array, PFN_DOWN(addr));
arch/x86/kernel/cpu/sgx/encl.c
299
return __sgx_encl_load_page(encl, entry);
arch/x86/kernel/cpu/sgx/encl.c
302
struct sgx_encl_page *sgx_encl_load_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
307
entry = xa_load(&encl->page_array, PFN_DOWN(addr));
arch/x86/kernel/cpu/sgx/encl.c
311
return __sgx_encl_load_page(encl, entry);
arch/x86/kernel/cpu/sgx/encl.c
328
struct sgx_encl *encl, unsigned long addr)
arch/x86/kernel/cpu/sgx/encl.c
339
if (!test_bit(SGX_ENCL_INITIALIZED, &encl->flags))
arch/x86/kernel/cpu/sgx/encl.c
349
encl_page = sgx_encl_page_alloc(encl, addr - encl->base, secinfo_flags);
arch/x86/kernel/cpu/sgx/encl.c
353
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
355
epc_page = sgx_encl_load_secs(encl);
arch/x86/kernel/cpu/sgx/encl.c
369
va_page = sgx_encl_grow(encl, false);
arch/x86/kernel/cpu/sgx/encl.c
377
list_add(&va_page->list, &encl->va_pages);
arch/x86/kernel/cpu/sgx/encl.c
379
ret = xa_insert(&encl->page_array, PFN_DOWN(encl_page->desc),
arch/x86/kernel/cpu/sgx/encl.c
388
pginfo.secs = (unsigned long)sgx_get_epc_virt_addr(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/encl.c
396
encl_page->encl = encl;
arch/x86/kernel/cpu/sgx/encl.c
399
encl->secs_child_cnt++;
arch/x86/kernel/cpu/sgx/encl.c
410
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
413
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
417
xa_erase(&encl->page_array, PFN_DOWN(encl_page->desc));
arch/x86/kernel/cpu/sgx/encl.c
420
sgx_encl_shrink(encl, va_page);
arch/x86/kernel/cpu/sgx/encl.c
424
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
436
struct sgx_encl *encl;
arch/x86/kernel/cpu/sgx/encl.c
439
encl = vma->vm_private_data;
arch/x86/kernel/cpu/sgx/encl.c
446
if (unlikely(!encl))
arch/x86/kernel/cpu/sgx/encl.c
457
(!xa_load(&encl->page_array, PFN_DOWN(addr))))
arch/x86/kernel/cpu/sgx/encl.c
458
return sgx_encl_eaug_page(vma, encl, addr);
arch/x86/kernel/cpu/sgx/encl.c
460
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
462
entry = sgx_encl_load_page_in_vma(encl, addr, vma->vm_flags);
arch/x86/kernel/cpu/sgx/encl.c
464
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
476
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
482
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
489
struct sgx_encl *encl = vma->vm_private_data;
arch/x86/kernel/cpu/sgx/encl.c
496
if (unlikely(!encl))
arch/x86/kernel/cpu/sgx/encl.c
499
if (sgx_encl_mm_add(encl, vma->vm_mm))
arch/x86/kernel/cpu/sgx/encl.c
522
int sgx_encl_may_map(struct sgx_encl *encl, unsigned long start,
arch/x86/kernel/cpu/sgx/encl.c
530
XA_STATE(xas, &encl->page_array, PFN_DOWN(start));
arch/x86/kernel/cpu/sgx/encl.c
533
if (test_bit(SGX_ENCL_INITIALIZED, &encl->flags) &&
arch/x86/kernel/cpu/sgx/encl.c
534
(start < encl->base || end > encl->base + encl->size))
arch/x86/kernel/cpu/sgx/encl.c
544
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
556
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
560
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
565
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
576
static int sgx_encl_debug_read(struct sgx_encl *encl, struct sgx_encl_page *page,
arch/x86/kernel/cpu/sgx/encl.c
58
static int reclaimer_writing_to_pcmd(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
590
static int sgx_encl_debug_write(struct sgx_encl *encl, struct sgx_encl_page *page,
arch/x86/kernel/cpu/sgx/encl.c
606
static struct sgx_encl_page *sgx_encl_reserve_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
613
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
615
entry = sgx_encl_load_page_in_vma(encl, addr, vm_flags);
arch/x86/kernel/cpu/sgx/encl.c
619
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
623
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
631
struct sgx_encl *encl = vma->vm_private_data;
arch/x86/kernel/cpu/sgx/encl.c
644
if (!encl)
arch/x86/kernel/cpu/sgx/encl.c
647
if (!test_bit(SGX_ENCL_DEBUG, &encl->flags))
arch/x86/kernel/cpu/sgx/encl.c
651
entry = sgx_encl_reserve_page(encl, (addr + i) & PAGE_MASK,
arch/x86/kernel/cpu/sgx/encl.c
663
ret = sgx_encl_debug_read(encl, entry, align, data);
arch/x86/kernel/cpu/sgx/encl.c
669
ret = sgx_encl_debug_write(encl, entry, align, data);
arch/x86/kernel/cpu/sgx/encl.c
677
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/encl.c
702
struct sgx_encl *encl = container_of(ref, struct sgx_encl, refcount);
arch/x86/kernel/cpu/sgx/encl.c
703
unsigned long max_page_index = PFN_DOWN(encl->base + encl->size - 1);
arch/x86/kernel/cpu/sgx/encl.c
708
XA_STATE(xas, &encl->page_array, PFN_DOWN(encl->base));
arch/x86/kernel/cpu/sgx/encl.c
721
encl->secs_child_cnt--;
arch/x86/kernel/cpu/sgx/encl.c
741
xa_destroy(&encl->page_array);
arch/x86/kernel/cpu/sgx/encl.c
743
if (!encl->secs_child_cnt && encl->secs.epc_page) {
arch/x86/kernel/cpu/sgx/encl.c
744
sgx_encl_free_epc_page(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/encl.c
745
encl->secs.epc_page = NULL;
arch/x86/kernel/cpu/sgx/encl.c
748
while (!list_empty(&encl->va_pages)) {
arch/x86/kernel/cpu/sgx/encl.c
749
va_page = list_first_entry(&encl->va_pages, struct sgx_va_page,
arch/x86/kernel/cpu/sgx/encl.c
756
if (encl->backing)
arch/x86/kernel/cpu/sgx/encl.c
757
fput(encl->backing);
arch/x86/kernel/cpu/sgx/encl.c
759
cleanup_srcu_struct(&encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
761
WARN_ON_ONCE(!list_empty(&encl->mm_list));
arch/x86/kernel/cpu/sgx/encl.c
764
WARN_ON_ONCE(encl->secs_child_cnt);
arch/x86/kernel/cpu/sgx/encl.c
765
WARN_ON_ONCE(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/encl.c
767
kfree(encl);
arch/x86/kernel/cpu/sgx/encl.c
785
spin_lock(&encl_mm->encl->mm_lock);
arch/x86/kernel/cpu/sgx/encl.c
786
list_for_each_entry(tmp, &encl_mm->encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/encl.c
793
spin_unlock(&encl_mm->encl->mm_lock);
arch/x86/kernel/cpu/sgx/encl.c
796
synchronize_srcu(&encl_mm->encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
806
kref_put(&encl_mm->encl->refcount, sgx_encl_release);
arch/x86/kernel/cpu/sgx/encl.c
816
static struct sgx_encl_mm *sgx_encl_find_mm(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
823
idx = srcu_read_lock(&encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
825
list_for_each_entry_rcu(tmp, &encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/encl.c
83
if (addr == encl->base + encl->size)
arch/x86/kernel/cpu/sgx/encl.c
832
srcu_read_unlock(&encl->srcu, idx);
arch/x86/kernel/cpu/sgx/encl.c
837
int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm)
arch/x86/kernel/cpu/sgx/encl.c
854
if (sgx_encl_find_mm(encl, mm))
arch/x86/kernel/cpu/sgx/encl.c
86
entry = xa_load(&encl->page_array, PFN_DOWN(addr));
arch/x86/kernel/cpu/sgx/encl.c
862
kref_get(&encl->refcount);
arch/x86/kernel/cpu/sgx/encl.c
863
encl_mm->encl = encl;
arch/x86/kernel/cpu/sgx/encl.c
873
spin_lock(&encl->mm_lock);
arch/x86/kernel/cpu/sgx/encl.c
874
list_add_rcu(&encl_mm->list, &encl->mm_list);
arch/x86/kernel/cpu/sgx/encl.c
877
encl->mm_list_version++;
arch/x86/kernel/cpu/sgx/encl.c
878
spin_unlock(&encl->mm_lock);
arch/x86/kernel/cpu/sgx/encl.c
926
const cpumask_t *sgx_encl_cpumask(struct sgx_encl *encl)
arch/x86/kernel/cpu/sgx/encl.c
928
cpumask_t *cpumask = &encl->cpumask;
arch/x86/kernel/cpu/sgx/encl.c
934
idx = srcu_read_lock(&encl->srcu);
arch/x86/kernel/cpu/sgx/encl.c
936
list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/encl.c
945
srcu_read_unlock(&encl->srcu, idx);
arch/x86/kernel/cpu/sgx/encl.c
950
static struct page *sgx_encl_get_backing_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.c
953
struct address_space *mapping = encl->backing->f_mapping;
arch/x86/kernel/cpu/sgx/encl.c
972
static int __sgx_encl_get_backing(struct sgx_encl *encl, unsigned long page_index,
arch/x86/kernel/cpu/sgx/encl.c
975
pgoff_t page_pcmd_off = sgx_encl_get_backing_page_pcmd_offset(encl, page_index);
arch/x86/kernel/cpu/sgx/encl.c
979
contents = sgx_encl_get_backing_page(encl, page_index);
arch/x86/kernel/cpu/sgx/encl.c
983
pcmd = sgx_encl_get_backing_page(encl, PFN_DOWN(page_pcmd_off));
arch/x86/kernel/cpu/sgx/encl.h
103
int sgx_encl_may_map(struct sgx_encl *encl, unsigned long start,
arch/x86/kernel/cpu/sgx/encl.h
108
int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm);
arch/x86/kernel/cpu/sgx/encl.h
109
const cpumask_t *sgx_encl_cpumask(struct sgx_encl *encl);
arch/x86/kernel/cpu/sgx/encl.h
110
int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index,
arch/x86/kernel/cpu/sgx/encl.h
115
struct sgx_encl_page *sgx_encl_page_alloc(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.h
118
void sgx_zap_enclave_ptes(struct sgx_encl *encl, unsigned long addr);
arch/x86/kernel/cpu/sgx/encl.h
124
struct sgx_encl_page *sgx_encl_load_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/encl.h
126
struct sgx_va_page *sgx_encl_grow(struct sgx_encl *encl, bool reclaim);
arch/x86/kernel/cpu/sgx/encl.h
127
void sgx_encl_shrink(struct sgx_encl *encl, struct sgx_va_page *va_page);
arch/x86/kernel/cpu/sgx/encl.h
33
struct sgx_encl *encl;
arch/x86/kernel/cpu/sgx/encl.h
45
struct sgx_encl *encl;
arch/x86/kernel/cpu/sgx/ioctl.c
100
encl->secs.epc_page = secs_epc;
arch/x86/kernel/cpu/sgx/ioctl.c
1002
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
1032
static long sgx_ioc_enclave_modify_types(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
1038
ret = sgx_ioc_sgx2_ready(encl);
arch/x86/kernel/cpu/sgx/ioctl.c
1045
if (sgx_validate_offset_length(encl, params.offset, params.length))
arch/x86/kernel/cpu/sgx/ioctl.c
1054
ret = sgx_enclave_modify_types(encl, &params);
arch/x86/kernel/cpu/sgx/ioctl.c
1071
static long sgx_encl_remove_pages(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
1085
addr = encl->base + params->offset + c;
arch/x86/kernel/cpu/sgx/ioctl.c
1089
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
1091
entry = sgx_encl_load_page(encl, addr);
arch/x86/kernel/cpu/sgx/ioctl.c
1126
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
1128
sgx_zap_enclave_ptes(encl, addr);
arch/x86/kernel/cpu/sgx/ioctl.c
1130
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
1133
encl->secs_child_cnt--;
arch/x86/kernel/cpu/sgx/ioctl.c
1135
xa_erase(&encl->page_array, PFN_DOWN(entry->desc));
arch/x86/kernel/cpu/sgx/ioctl.c
1136
sgx_encl_shrink(encl, NULL);
arch/x86/kernel/cpu/sgx/ioctl.c
1139
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
1146
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
115
set_bit(SGX_ENCL_DEBUG, &encl->flags);
arch/x86/kernel/cpu/sgx/ioctl.c
117
encl->secs.encl = encl;
arch/x86/kernel/cpu/sgx/ioctl.c
1179
static long sgx_ioc_enclave_remove_pages(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
118
encl->secs.type = SGX_PAGE_TYPE_SECS;
arch/x86/kernel/cpu/sgx/ioctl.c
1185
ret = sgx_ioc_sgx2_ready(encl);
arch/x86/kernel/cpu/sgx/ioctl.c
119
encl->base = secs->base;
arch/x86/kernel/cpu/sgx/ioctl.c
1192
if (sgx_validate_offset_length(encl, params.offset, params.length))
arch/x86/kernel/cpu/sgx/ioctl.c
1198
ret = sgx_encl_remove_pages(encl, &params);
arch/x86/kernel/cpu/sgx/ioctl.c
120
encl->size = secs->size;
arch/x86/kernel/cpu/sgx/ioctl.c
1208
struct sgx_encl *encl = filep->private_data;
arch/x86/kernel/cpu/sgx/ioctl.c
121
encl->attributes = secs->attributes;
arch/x86/kernel/cpu/sgx/ioctl.c
1211
if (test_and_set_bit(SGX_ENCL_IOCTL, &encl->flags))
arch/x86/kernel/cpu/sgx/ioctl.c
1216
ret = sgx_ioc_enclave_create(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
1219
ret = sgx_ioc_enclave_add_pages(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
122
encl->attributes_mask = SGX_ATTR_UNPRIV_MASK;
arch/x86/kernel/cpu/sgx/ioctl.c
1222
ret = sgx_ioc_enclave_init(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
1225
ret = sgx_ioc_enclave_provision(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
1228
ret = sgx_ioc_enclave_restrict_permissions(encl,
arch/x86/kernel/cpu/sgx/ioctl.c
1232
ret = sgx_ioc_enclave_modify_types(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
1235
ret = sgx_ioc_enclave_remove_pages(encl, (void __user *)arg);
arch/x86/kernel/cpu/sgx/ioctl.c
1242
clear_bit(SGX_ENCL_IOCTL, &encl->flags);
arch/x86/kernel/cpu/sgx/ioctl.c
125
set_bit(SGX_ENCL_CREATED, &encl->flags);
arch/x86/kernel/cpu/sgx/ioctl.c
130
sgx_encl_free_epc_page(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/ioctl.c
131
encl->secs.epc_page = NULL;
arch/x86/kernel/cpu/sgx/ioctl.c
134
fput(encl->backing);
arch/x86/kernel/cpu/sgx/ioctl.c
135
encl->backing = NULL;
arch/x86/kernel/cpu/sgx/ioctl.c
138
sgx_encl_shrink(encl, va_page);
arch/x86/kernel/cpu/sgx/ioctl.c
155
static long sgx_ioc_enclave_create(struct sgx_encl *encl, void __user *arg)
arch/x86/kernel/cpu/sgx/ioctl.c
161
if (test_bit(SGX_ENCL_CREATED, &encl->flags))
arch/x86/kernel/cpu/sgx/ioctl.c
174
ret = sgx_encl_create(encl, secs);
arch/x86/kernel/cpu/sgx/ioctl.c
207
static int __sgx_encl_add_page(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
21
struct sgx_va_page *sgx_encl_grow(struct sgx_encl *encl, bool reclaim)
arch/x86/kernel/cpu/sgx/ioctl.c
229
pginfo.secs = (unsigned long)sgx_get_epc_virt_addr(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/ioctl.c
247
static int __sgx_encl_extend(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
254
ret = __eextend(sgx_get_epc_virt_addr(encl->secs.epc_page),
arch/x86/kernel/cpu/sgx/ioctl.c
267
static int sgx_encl_add_page(struct sgx_encl *encl, unsigned long src,
arch/x86/kernel/cpu/sgx/ioctl.c
276
encl_page = sgx_encl_page_alloc(encl, offset, secinfo->flags);
arch/x86/kernel/cpu/sgx/ioctl.c
286
va_page = sgx_encl_grow(encl, true);
arch/x86/kernel/cpu/sgx/ioctl.c
29
if (!(encl->page_cnt % SGX_VA_SLOT_COUNT)) {
arch/x86/kernel/cpu/sgx/ioctl.c
293
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
300
list_add(&va_page->list, &encl->va_pages);
arch/x86/kernel/cpu/sgx/ioctl.c
307
ret = xa_insert(&encl->page_array, PFN_DOWN(encl_page->desc),
arch/x86/kernel/cpu/sgx/ioctl.c
312
ret = __sgx_encl_add_page(encl, encl_page, epc_page, secinfo,
arch/x86/kernel/cpu/sgx/ioctl.c
322
encl_page->encl = encl;
arch/x86/kernel/cpu/sgx/ioctl.c
325
encl->secs_child_cnt++;
arch/x86/kernel/cpu/sgx/ioctl.c
328
ret = __sgx_encl_extend(encl, epc_page);
arch/x86/kernel/cpu/sgx/ioctl.c
334
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
339
xa_erase(&encl->page_array, PFN_DOWN(encl_page->desc));
arch/x86/kernel/cpu/sgx/ioctl.c
342
sgx_encl_shrink(encl, va_page);
arch/x86/kernel/cpu/sgx/ioctl.c
343
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
357
static int sgx_validate_offset_length(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
370
if (offset + length - PAGE_SIZE >= encl->size)
arch/x86/kernel/cpu/sgx/ioctl.c
41
WARN_ON_ONCE(encl->page_cnt % SGX_VA_SLOT_COUNT);
arch/x86/kernel/cpu/sgx/ioctl.c
415
static long sgx_ioc_enclave_add_pages(struct sgx_encl *encl, void __user *arg)
arch/x86/kernel/cpu/sgx/ioctl.c
422
if (!test_bit(SGX_ENCL_CREATED, &encl->flags) ||
arch/x86/kernel/cpu/sgx/ioctl.c
423
test_bit(SGX_ENCL_INITIALIZED, &encl->flags))
arch/x86/kernel/cpu/sgx/ioctl.c
43
encl->page_cnt++;
arch/x86/kernel/cpu/sgx/ioctl.c
432
if (sgx_validate_offset_length(encl, add_arg.offset, add_arg.length))
arch/x86/kernel/cpu/sgx/ioctl.c
453
ret = sgx_encl_add_page(encl, add_arg.src + c, add_arg.offset + c,
arch/x86/kernel/cpu/sgx/ioctl.c
467
static int sgx_encl_init(struct sgx_encl *encl, struct sgx_sigstruct *sigstruct,
arch/x86/kernel/cpu/sgx/ioctl.c
47
void sgx_encl_shrink(struct sgx_encl *encl, struct sgx_va_page *va_page)
arch/x86/kernel/cpu/sgx/ioctl.c
479
if (encl->attributes & ~encl->attributes_mask)
arch/x86/kernel/cpu/sgx/ioctl.c
49
encl->page_cnt--;
arch/x86/kernel/cpu/sgx/ioctl.c
504
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
514
addr = sgx_get_epc_virt_addr(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/ioctl.c
550
set_bit(SGX_ENCL_INITIALIZED, &encl->flags);
arch/x86/kernel/cpu/sgx/ioctl.c
554
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
573
static long sgx_ioc_enclave_init(struct sgx_encl *encl, void __user *arg)
arch/x86/kernel/cpu/sgx/ioctl.c
58
static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs)
arch/x86/kernel/cpu/sgx/ioctl.c
580
if (!test_bit(SGX_ENCL_CREATED, &encl->flags) ||
arch/x86/kernel/cpu/sgx/ioctl.c
581
test_bit(SGX_ENCL_INITIALIZED, &encl->flags))
arch/x86/kernel/cpu/sgx/ioctl.c
618
ret = sgx_encl_init(encl, sigstruct, token);
arch/x86/kernel/cpu/sgx/ioctl.c
637
static long sgx_ioc_enclave_provision(struct sgx_encl *encl, void __user *arg)
arch/x86/kernel/cpu/sgx/ioctl.c
644
return sgx_set_attribute(&encl->attributes_mask, params.fd);
arch/x86/kernel/cpu/sgx/ioctl.c
652
static int sgx_ioc_sgx2_ready(struct sgx_encl *encl)
arch/x86/kernel/cpu/sgx/ioctl.c
657
if (!test_bit(SGX_ENCL_INITIALIZED, &encl->flags))
arch/x86/kernel/cpu/sgx/ioctl.c
674
static int sgx_enclave_etrack(struct sgx_encl *encl)
arch/x86/kernel/cpu/sgx/ioctl.c
679
epc_virt = sgx_get_epc_virt_addr(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/ioctl.c
692
on_each_cpu_mask(sgx_encl_cpumask(encl), sgx_ipi_cb, NULL, 1);
arch/x86/kernel/cpu/sgx/ioctl.c
700
on_each_cpu_mask(sgx_encl_cpumask(encl), sgx_ipi_cb, NULL, 1);
arch/x86/kernel/cpu/sgx/ioctl.c
716
sgx_enclave_restrict_permissions(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
730
addr = encl->base + modp->offset + c;
arch/x86/kernel/cpu/sgx/ioctl.c
734
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
736
entry = sgx_encl_load_page(encl, addr);
arch/x86/kernel/cpu/sgx/ioctl.c
75
va_page = sgx_encl_grow(encl, true);
arch/x86/kernel/cpu/sgx/ioctl.c
783
ret = sgx_enclave_etrack(encl);
arch/x86/kernel/cpu/sgx/ioctl.c
789
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
79
list_add(&va_page->list, &encl->va_pages);
arch/x86/kernel/cpu/sgx/ioctl.c
796
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
823
static long sgx_ioc_enclave_restrict_permissions(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
829
ret = sgx_ioc_sgx2_ready(encl);
arch/x86/kernel/cpu/sgx/ioctl.c
836
if (sgx_validate_offset_length(encl, params.offset, params.length))
arch/x86/kernel/cpu/sgx/ioctl.c
853
ret = sgx_enclave_restrict_permissions(encl, &params);
arch/x86/kernel/cpu/sgx/ioctl.c
871
static long sgx_enclave_modify_types(struct sgx_encl *encl,
arch/x86/kernel/cpu/sgx/ioctl.c
897
addr = encl->base + modt->offset + c;
arch/x86/kernel/cpu/sgx/ioctl.c
901
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
903
entry = sgx_encl_load_page(encl, addr);
arch/x86/kernel/cpu/sgx/ioctl.c
92
encl->backing = backing;
arch/x86/kernel/cpu/sgx/ioctl.c
94
secs_epc = sgx_alloc_epc_page(&encl->secs, true);
arch/x86/kernel/cpu/sgx/ioctl.c
954
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
956
sgx_zap_enclave_ptes(encl, addr);
arch/x86/kernel/cpu/sgx/ioctl.c
958
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/ioctl.c
985
ret = sgx_enclave_etrack(encl);
arch/x86/kernel/cpu/sgx/ioctl.c
993
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/main.c
116
struct sgx_encl *encl = page->encl;
arch/x86/kernel/cpu/sgx/main.c
121
idx = srcu_read_lock(&encl->srcu);
arch/x86/kernel/cpu/sgx/main.c
123
list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) {
arch/x86/kernel/cpu/sgx/main.c
137
srcu_read_unlock(&encl->srcu, idx);
arch/x86/kernel/cpu/sgx/main.c
149
struct sgx_encl *encl = page->encl;
arch/x86/kernel/cpu/sgx/main.c
152
sgx_zap_enclave_ptes(encl, addr);
arch/x86/kernel/cpu/sgx/main.c
154
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/main.c
160
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/main.c
205
struct sgx_encl *encl = encl_page->encl;
arch/x86/kernel/cpu/sgx/main.c
213
va_page = list_first_entry(&encl->va_pages, struct sgx_va_page,
arch/x86/kernel/cpu/sgx/main.c
218
list_move_tail(&va_page->list, &encl->va_pages);
arch/x86/kernel/cpu/sgx/main.c
222
ret = __etrack(sgx_get_epc_virt_addr(encl->secs.epc_page));
arch/x86/kernel/cpu/sgx/main.c
237
on_each_cpu_mask(sgx_encl_cpumask(encl),
arch/x86/kernel/cpu/sgx/main.c
258
struct sgx_encl *encl = encl_page->encl;
arch/x86/kernel/cpu/sgx/main.c
262
mutex_lock(&encl->lock);
arch/x86/kernel/cpu/sgx/main.c
266
encl->secs_child_cnt--;
arch/x86/kernel/cpu/sgx/main.c
269
if (!encl->secs_child_cnt && test_bit(SGX_ENCL_INITIALIZED, &encl->flags)) {
arch/x86/kernel/cpu/sgx/main.c
270
ret = sgx_encl_alloc_backing(encl, PFN_DOWN(encl->size),
arch/x86/kernel/cpu/sgx/main.c
275
sgx_encl_ewb(encl->secs.epc_page, &secs_backing);
arch/x86/kernel/cpu/sgx/main.c
277
sgx_encl_free_epc_page(encl->secs.epc_page);
arch/x86/kernel/cpu/sgx/main.c
278
encl->secs.epc_page = NULL;
arch/x86/kernel/cpu/sgx/main.c
284
mutex_unlock(&encl->lock);
arch/x86/kernel/cpu/sgx/main.c
321
if (kref_get_unless_zero(&encl_page->encl->refcount) != 0)
arch/x86/kernel/cpu/sgx/main.c
338
page_index = PFN_DOWN(encl_page->desc - encl_page->encl->base);
arch/x86/kernel/cpu/sgx/main.c
340
mutex_lock(&encl_page->encl->lock);
arch/x86/kernel/cpu/sgx/main.c
341
ret = sgx_encl_alloc_backing(encl_page->encl, page_index, &backing[i]);
arch/x86/kernel/cpu/sgx/main.c
343
mutex_unlock(&encl_page->encl->lock);
arch/x86/kernel/cpu/sgx/main.c
348
mutex_unlock(&encl_page->encl->lock);
arch/x86/kernel/cpu/sgx/main.c
356
kref_put(&encl_page->encl->refcount, sgx_encl_release);
arch/x86/kernel/cpu/sgx/main.c
375
kref_put(&encl_page->encl->refcount, sgx_encl_release);
tools/testing/selftests/sgx/load.c
106
static bool encl_ioc_add_pages(struct encl *encl, struct encl_segment *seg)
tools/testing/selftests/sgx/load.c
124
rc = ioctl(encl->fd, SGX_IOC_ENCLAVE_ADD_PAGES, &ioc);
tools/testing/selftests/sgx/load.c
137
uint64_t encl_get_entry(struct encl *encl, const char *symbol)
tools/testing/selftests/sgx/load.c
146
ehdr = encl->bin;
tools/testing/selftests/sgx/load.c
147
sections = encl->bin + ehdr->e_shoff;
tools/testing/selftests/sgx/load.c
151
symtab = (Elf64_Sym *)((char *)encl->bin + sections[i].sh_offset);
tools/testing/selftests/sgx/load.c
159
sym_names = (char *)encl->bin + sections[i].sh_offset;
tools/testing/selftests/sgx/load.c
177
bool encl_load(const char *path, struct encl *encl, unsigned long heap_size)
tools/testing/selftests/sgx/load.c
190
memset(encl, 0, sizeof(*encl));
tools/testing/selftests/sgx/load.c
22
void encl_delete(struct encl *encl)
tools/testing/selftests/sgx/load.c
224
encl->fd = fd;
tools/testing/selftests/sgx/load.c
226
if (!encl_map_bin(path, encl))
tools/testing/selftests/sgx/load.c
229
ehdr = encl->bin;
tools/testing/selftests/sgx/load.c
230
phdr_tbl = encl->bin + ehdr->e_phoff;
tools/testing/selftests/sgx/load.c
232
encl->nr_segments = 1; /* one for the heap */
tools/testing/selftests/sgx/load.c
238
encl->nr_segments++;
tools/testing/selftests/sgx/load.c
241
encl->segment_tbl = calloc(encl->nr_segments,
tools/testing/selftests/sgx/load.c
243
if (!encl->segment_tbl)
tools/testing/selftests/sgx/load.c
253
seg = &encl->segment_tbl[j];
tools/testing/selftests/sgx/load.c
26
if (encl->encl_base)
tools/testing/selftests/sgx/load.c
27
munmap((void *)encl->encl_base, encl->encl_size);
tools/testing/selftests/sgx/load.c
271
encl->src = encl->bin + src_offset;
tools/testing/selftests/sgx/load.c
284
seg->src = encl->src + seg->offset;
tools/testing/selftests/sgx/load.c
29
if (encl->bin)
tools/testing/selftests/sgx/load.c
290
assert(j == encl->nr_segments - 1);
tools/testing/selftests/sgx/load.c
292
seg = &encl->segment_tbl[j];
tools/testing/selftests/sgx/load.c
293
seg->offset = encl->segment_tbl[j - 1].offset + encl->segment_tbl[j - 1].size;
tools/testing/selftests/sgx/load.c
30
munmap(encl->bin, encl->bin_size);
tools/testing/selftests/sgx/load.c
304
encl->src_size = encl->segment_tbl[j].offset + encl->segment_tbl[j].size;
tools/testing/selftests/sgx/load.c
306
for (encl->encl_size = 4096; encl->encl_size < encl->src_size; )
tools/testing/selftests/sgx/load.c
307
encl->encl_size <<= 1;
tools/testing/selftests/sgx/load.c
314
encl_delete(encl);
tools/testing/selftests/sgx/load.c
318
static bool encl_map_area(struct encl *encl)
tools/testing/selftests/sgx/load.c
32
if (encl->fd)
tools/testing/selftests/sgx/load.c
320
size_t encl_size = encl->encl_size;
tools/testing/selftests/sgx/load.c
33
close(encl->fd);
tools/testing/selftests/sgx/load.c
330
encl->encl_base = ((uint64_t)area + encl_size - 1) & ~(encl_size - 1);
tools/testing/selftests/sgx/load.c
332
munmap(area, encl->encl_base - (uint64_t)area);
tools/testing/selftests/sgx/load.c
333
munmap((void *)(encl->encl_base + encl_size),
tools/testing/selftests/sgx/load.c
334
(uint64_t)area + encl_size - encl->encl_base);
tools/testing/selftests/sgx/load.c
339
bool encl_build(struct encl *encl)
tools/testing/selftests/sgx/load.c
345
if (!encl_map_area(encl))
tools/testing/selftests/sgx/load.c
348
if (!encl_ioc_create(encl))
tools/testing/selftests/sgx/load.c
35
if (encl->segment_tbl) {
tools/testing/selftests/sgx/load.c
355
for (i = 0; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/load.c
356
struct encl_segment *seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/load.c
358
if (!encl_ioc_add_pages(encl, seg))
tools/testing/selftests/sgx/load.c
36
heap_seg = &encl->segment_tbl[encl->nr_segments - 1];
tools/testing/selftests/sgx/load.c
362
ioc.sigstruct = (uint64_t)&encl->sigstruct;
tools/testing/selftests/sgx/load.c
363
ret = ioctl(encl->fd, SGX_IOC_ENCLAVE_INIT, &ioc);
tools/testing/selftests/sgx/load.c
38
free(encl->segment_tbl);
tools/testing/selftests/sgx/load.c
41
memset(encl, 0, sizeof(*encl));
tools/testing/selftests/sgx/load.c
44
static bool encl_map_bin(const char *path, struct encl *encl)
tools/testing/selftests/sgx/load.c
69
encl->bin = bin;
tools/testing/selftests/sgx/load.c
70
encl->bin_size = sb.st_size;
tools/testing/selftests/sgx/load.c
80
static bool encl_ioc_create(struct encl *encl)
tools/testing/selftests/sgx/load.c
82
struct sgx_secs *secs = &encl->secs;
tools/testing/selftests/sgx/load.c
86
assert(encl->encl_base != 0);
tools/testing/selftests/sgx/load.c
92
secs->base = encl->encl_base;
tools/testing/selftests/sgx/load.c
93
secs->size = encl->encl_size;
tools/testing/selftests/sgx/load.c
96
rc = ioctl(encl->fd, SGX_IOC_ENCLAVE_CREATE, &ioc);
tools/testing/selftests/sgx/load.c
99
munmap((void *)secs->base, encl->encl_size);
tools/testing/selftests/sgx/main.c
1005
EXPECT_LT(total_size + PAGE_SIZE, self->encl.encl_size);
tools/testing/selftests/sgx/main.c
1015
addr = mmap((void *)self->encl.encl_base + total_size, PAGE_SIZE,
tools/testing/selftests/sgx/main.c
1017
MAP_SHARED | MAP_FIXED, self->encl.fd, 0);
tools/testing/selftests/sgx/main.c
1056
self->run.tcs = self->encl.encl_base + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1058
eaccept_op.epc_addr = self->encl.encl_base + total_size;
tools/testing/selftests/sgx/main.c
1072
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1119
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
1122
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1124
for (i = 0; i < self->encl.nr_segments; i++) {
tools/testing/selftests/sgx/main.c
1125
struct encl_segment *seg = &self->encl.segment_tbl[i];
tools/testing/selftests/sgx/main.c
1135
EXPECT_LT(total_size + PAGE_SIZE, self->encl.encl_size);
tools/testing/selftests/sgx/main.c
1146
addr = mmap((void *)self->encl.encl_base + total_size, PAGE_SIZE,
tools/testing/selftests/sgx/main.c
1148
self->encl.fd, 0);
tools/testing/selftests/sgx/main.c
1159
eaccept_op.epc_addr = self->encl.encl_base + total_size;
tools/testing/selftests/sgx/main.c
1168
self->run.exception_addr == self->encl.encl_base + total_size) {
tools/testing/selftests/sgx/main.c
1240
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl,
tools/testing/selftests/sgx/main.c
1244
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1251
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
1273
for (i = 0; i < self->encl.nr_segments; i++) {
tools/testing/selftests/sgx/main.c
1274
struct encl_segment *seg = &self->encl.segment_tbl[i];
tools/testing/selftests/sgx/main.c
1284
EXPECT_LT(total_size + 3 * PAGE_SIZE, self->encl.encl_size);
tools/testing/selftests/sgx/main.c
1290
addr = mmap((void *)self->encl.encl_base + total_size, 3 * PAGE_SIZE,
tools/testing/selftests/sgx/main.c
1292
self->encl.fd, 0);
tools/testing/selftests/sgx/main.c
1299
stack_end = (void *)self->encl.encl_base + total_size;
tools/testing/selftests/sgx/main.c
1300
tcs = (void *)self->encl.encl_base + total_size + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1301
ssa = (void *)self->encl.encl_base + total_size + 2 * PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1359
val_64 = encl_get_entry(&self->encl, "encl_dyn_entry");
tools/testing/selftests/sgx/main.c
137
static off_t encl_get_tcs_offset(struct encl *encl)
tools/testing/selftests/sgx/main.c
1381
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
141
for (i = 0; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/main.c
142
struct encl_segment *seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/main.c
1444
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
1456
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1499
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
tools/testing/selftests/sgx/main.c
156
static off_t encl_get_data_offset(struct encl *encl)
tools/testing/selftests/sgx/main.c
1571
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
1574
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1581
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
160
for (i = 1; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/main.c
1602
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
1603
encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
161
struct encl_segment *seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/main.c
1641
modt_ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1645
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
1658
remove_ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1661
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
tools/testing/selftests/sgx/main.c
1682
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
1685
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1692
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &ioc);
tools/testing/selftests/sgx/main.c
171
struct encl encl;
tools/testing/selftests/sgx/main.c
1713
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
1714
encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
175
static bool setup_test_encl(unsigned long heap_size, struct encl *encl,
tools/testing/selftests/sgx/main.c
1752
ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1756
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &ioc);
tools/testing/selftests/sgx/main.c
1797
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
1800
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1807
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &ioc);
tools/testing/selftests/sgx/main.c
1828
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
1829
encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
186
if (!encl_load("test_encl.elf", encl, heap_size)) {
tools/testing/selftests/sgx/main.c
1867
ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
187
encl_delete(encl);
tools/testing/selftests/sgx/main.c
1871
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &ioc);
tools/testing/selftests/sgx/main.c
192
if (!encl_measure(encl))
tools/testing/selftests/sgx/main.c
1921
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
1928
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
1946
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
1948
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
1949
encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
195
if (!encl_build(encl))
tools/testing/selftests/sgx/main.c
1953
modt_ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1956
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
1983
remove_ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
1985
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
tools/testing/selftests/sgx/main.c
201
for (i = 0; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/main.c
202
struct encl_segment *seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/main.c
204
addr = mmap((void *)encl->encl_base + seg->offset, seg->size,
tools/testing/selftests/sgx/main.c
205
seg->prot, MAP_SHARED | MAP_FIXED, encl->fd, 0);
tools/testing/selftests/sgx/main.c
228
for (i = 0; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/main.c
229
seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/main.c
248
encl_delete(encl);
tools/testing/selftests/sgx/main.c
259
encl_delete(&self->encl);
tools/testing/selftests/sgx/main.c
287
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
290
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
360
ASSERT_TRUE(setup_test_encl(total_mem, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
363
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
404
ASSERT_TRUE(setup_test_encl(total_mem, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
411
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
429
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
431
heap = &self->encl.segment_tbl[self->encl.nr_segments - 1];
tools/testing/selftests/sgx/main.c
459
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
tools/testing/selftests/sgx/main.c
468
addr = self->encl.encl_base + heap->offset;
tools/testing/selftests/sgx/main.c
496
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
tools/testing/selftests/sgx/main.c
509
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
512
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
545
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
548
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
578
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
581
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
593
self->run.tcs = self->encl.encl_base + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
623
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
626
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
628
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
629
encl_get_data_offset(&self->encl) +
tools/testing/selftests/sgx/main.c
725
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
728
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
737
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS, &ioc);
tools/testing/selftests/sgx/main.c
757
ioc.offset = encl_get_tcs_offset(&self->encl);
tools/testing/selftests/sgx/main.c
761
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS, &ioc);
tools/testing/selftests/sgx/main.c
788
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
791
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
799
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS,
tools/testing/selftests/sgx/main.c
825
data_start = self->encl.encl_base +
tools/testing/selftests/sgx/main.c
826
encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
867
restrict_ioc.offset = encl_get_data_offset(&self->encl) + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
871
ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS,
tools/testing/selftests/sgx/main.c
918
self->run.tcs = self->encl.encl_base + PAGE_SIZE;
tools/testing/selftests/sgx/main.c
941
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
948
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
989
ASSERT_TRUE(setup_test_encl(ENCL_HEAP_SIZE_DEFAULT, &self->encl, _metadata));
tools/testing/selftests/sgx/main.c
992
self->run.tcs = self->encl.encl_base;
tools/testing/selftests/sgx/main.c
994
for (i = 0; i < self->encl.nr_segments; i++) {
tools/testing/selftests/sgx/main.c
995
struct encl_segment *seg = &self->encl.segment_tbl[i];
tools/testing/selftests/sgx/main.h
37
void encl_delete(struct encl *ctx);
tools/testing/selftests/sgx/main.h
38
bool encl_load(const char *path, struct encl *encl, unsigned long heap_size);
tools/testing/selftests/sgx/main.h
39
bool encl_measure(struct encl *encl);
tools/testing/selftests/sgx/main.h
40
bool encl_build(struct encl *encl);
tools/testing/selftests/sgx/main.h
41
uint64_t encl_get_entry(struct encl *encl, const char *symbol);
tools/testing/selftests/sgx/sigstruct.c
295
static bool mrenclave_segment(EVP_MD_CTX *ctx, struct encl *encl,
tools/testing/selftests/sgx/sigstruct.c
314
bool encl_measure(struct encl *encl)
tools/testing/selftests/sgx/sigstruct.c
318
struct sgx_sigstruct *sigstruct = &encl->sigstruct;
tools/testing/selftests/sgx/sigstruct.c
352
if (!mrenclave_ecreate(ctx, encl->src_size))
tools/testing/selftests/sgx/sigstruct.c
355
for (i = 0; i < encl->nr_segments; i++) {
tools/testing/selftests/sgx/sigstruct.c
356
struct encl_segment *seg = &encl->segment_tbl[i];
tools/testing/selftests/sgx/sigstruct.c
358
if (!mrenclave_segment(ctx, encl, seg))