Lines Matching defs:enclave
38 * The driver duties is EPC pages management, enclave management, user data
50 * VM object destructor destroys the SGX enclave associated
52 * enclave and removes the enclave.
59 * Adds Enclave SECS page: initial step of enclave creation.
61 * Adds TCS, REG pages to the enclave.
63 * Finalizes enclave creation.
70 * '-- EINIT -- Finalize enclave creation
71 * User .-- EENTER -- Go to entry point of enclave
73 * ENCLU '-- ERESUME -- Resume enclave execution (e.g. after exception)
79 * page and store it in enclave's VM object queue by special index
81 * 3) User calls ioctl SGX_IOC_ENCLAVE_ADD_PAGE: we look for enclave created
83 * user address of enclave VM object.
84 * 4) User finalizes enclave creation with ioctl SGX_IOC_ENCLAVE_INIT call.
85 * 5) User can freely enter to and exit from enclave using ENCLU instructions
87 * 6) User proceed munmap(2) system call (or the process with enclave dies):
88 * we destroy the enclave associated with the object.
229 struct sgx_enclave *enclave,
238 object = enclave->object;
265 dprintf("%s: Can't find enclave.\n", __func__);
295 struct sgx_enclave *enclave;
310 enclave = vmh->enclave;
311 if (enclave == NULL || enclave->object == NULL) {
316 *encl = enclave;
325 struct sgx_enclave *enclave;
327 enclave = malloc(sizeof(struct sgx_enclave),
330 enclave->base = secs->base;
331 enclave->size = secs->size;
333 *enclave0 = enclave;
370 struct sgx_enclave *enclave)
376 TAILQ_REMOVE(&sc->enclaves, enclave, next);
379 object = enclave->object;
569 if (vmh->enclave == NULL) {
574 sgx_enclave_remove(sc, vmh->enclave);
576 free(vmh->enclave, M_SGX);
588 * enclave creation ioctl calls.
614 sgx_insert_epc_page(struct sgx_enclave *enclave,
620 VM_OBJECT_ASSERT_WLOCKED(enclave->object);
625 sgx_insert_epc_page_by_index(page, enclave->object, pidx);
636 struct sgx_enclave *enclave;
645 enclave = NULL;
679 ret = sgx_enclave_alloc(sc, secs, &enclave);
681 dprintf("%s: Can't alloc enclave.\n", __func__);
684 enclave->object = object;
685 enclave->vmh = vmh;
699 enclave->secs_epc_page = epc;
722 p = vm_page_grab(enclave->object,
736 p = vm_page_grab(enclave->object,
744 TAILQ_INSERT_TAIL(&sc->enclaves, enclave, next);
747 vmh->enclave = enclave;
750 sgx_insert_epc_page_by_index(page, enclave->object,
765 free(enclave, M_SGX);
776 struct sgx_enclave *enclave;
795 ret = sgx_enclave_find(sc, addp->addr, &enclave);
797 dprintf("%s: Failed to find enclave.\n", __func__);
801 object = enclave->object;
855 ret = sgx_va_slot_init(sc, enclave, addr);
862 secs_epc_page = enclave->secs_epc_page;
879 ret = sgx_measure_page(sc, enclave->secs_epc_page, epc, addp->mrmask);
887 sgx_insert_epc_page(enclave, epc, addr);
910 struct sgx_enclave *enclave;
927 ret = sgx_enclave_find(sc, initp->addr, &enclave);
929 dprintf("%s: Failed to find enclave.\n", __func__);
933 object = enclave->object;
953 secs_epc_page = enclave->secs_epc_page;
964 dprintf("%s: Failed init enclave: %d\n", __func__, ret);