Lines Matching refs:vepc

34 static int __sgx_vepc_fault(struct sgx_vepc *vepc,  in __sgx_vepc_fault()  argument
41 WARN_ON(!mutex_is_locked(&vepc->lock)); in __sgx_vepc_fault()
46 epc_page = xa_load(&vepc->page_array, index); in __sgx_vepc_fault()
50 epc_page = sgx_alloc_epc_page(vepc, false); in __sgx_vepc_fault()
54 ret = xa_err(xa_store(&vepc->page_array, index, epc_page, GFP_KERNEL)); in __sgx_vepc_fault()
69 xa_erase(&vepc->page_array, index); in __sgx_vepc_fault()
78 struct sgx_vepc *vepc = vma->vm_private_data; in sgx_vepc_fault() local
81 mutex_lock(&vepc->lock); in sgx_vepc_fault()
82 ret = __sgx_vepc_fault(vepc, vma, vmf->address); in sgx_vepc_fault()
83 mutex_unlock(&vepc->lock); in sgx_vepc_fault()
102 struct sgx_vepc *vepc = file->private_data; in sgx_vepc_mmap() local
110 vma->vm_private_data = vepc; in sgx_vepc_mmap()
154 static long sgx_vepc_remove_all(struct sgx_vepc *vepc) in sgx_vepc_remove_all() argument
160 xa_for_each(&vepc->page_array, index, entry) { in sgx_vepc_remove_all()
191 struct sgx_vepc *vepc = file->private_data; in sgx_vepc_release() local
197 xa_for_each(&vepc->page_array, index, entry) { in sgx_vepc_release()
207 xa_erase(&vepc->page_array, index); in sgx_vepc_release()
215 xa_for_each(&vepc->page_array, index, entry) { in sgx_vepc_release()
226 xa_erase(&vepc->page_array, index); in sgx_vepc_release()
256 xa_destroy(&vepc->page_array); in sgx_vepc_release()
257 kfree(vepc); in sgx_vepc_release()
265 struct sgx_vepc *vepc; in __sgx_vepc_open() local
267 vepc = kzalloc_obj(struct sgx_vepc); in __sgx_vepc_open()
268 if (!vepc) in __sgx_vepc_open()
270 mutex_init(&vepc->lock); in __sgx_vepc_open()
271 xa_init(&vepc->page_array); in __sgx_vepc_open()
273 file->private_data = vepc; in __sgx_vepc_open()
298 struct sgx_vepc *vepc = file->private_data; in sgx_vepc_ioctl() local
304 return sgx_vepc_remove_all(vepc); in sgx_vepc_ioctl()