Lines Matching refs:epc_page
109 static bool sgx_reclaimer_age(struct sgx_epc_page *epc_page) in sgx_reclaimer_age() argument
111 struct sgx_encl_page *page = epc_page->owner; in sgx_reclaimer_age()
141 static void sgx_reclaimer_block(struct sgx_epc_page *epc_page) in sgx_reclaimer_block() argument
143 struct sgx_encl_page *page = epc_page->owner; in sgx_reclaimer_block()
152 ret = __eblock(sgx_get_epc_virt_addr(epc_page)); in sgx_reclaimer_block()
159 static int __sgx_encl_ewb(struct sgx_epc_page *epc_page, void *va_slot, in __sgx_encl_ewb() argument
172 ret = __ewb(&pginfo, sgx_get_epc_virt_addr(epc_page), va_slot); in __sgx_encl_ewb()
197 static void sgx_encl_ewb(struct sgx_epc_page *epc_page, in sgx_encl_ewb() argument
200 struct sgx_encl_page *encl_page = epc_page->owner; in sgx_encl_ewb()
212 va_slot = sgx_get_epc_virt_addr(va_page->epc_page) + va_offset; in sgx_encl_ewb()
216 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
218 ret = __etrack(sgx_get_epc_virt_addr(encl->secs.epc_page)); in sgx_encl_ewb()
224 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
235 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
250 static void sgx_reclaimer_write(struct sgx_epc_page *epc_page, in sgx_reclaimer_write() argument
253 struct sgx_encl_page *encl_page = epc_page->owner; in sgx_reclaimer_write()
260 sgx_encl_ewb(epc_page, backing); in sgx_reclaimer_write()
261 encl_page->epc_page = NULL; in sgx_reclaimer_write()
271 sgx_encl_ewb(encl->secs.epc_page, &secs_backing); in sgx_reclaimer_write()
273 sgx_encl_free_epc_page(encl->secs.epc_page); in sgx_reclaimer_write()
274 encl->secs.epc_page = NULL; in sgx_reclaimer_write()
301 struct sgx_epc_page *epc_page; in sgx_reclaim_pages() local
312 epc_page = list_first_entry(&sgx_active_page_list, in sgx_reclaim_pages()
314 list_del_init(&epc_page->list); in sgx_reclaim_pages()
315 encl_page = epc_page->owner; in sgx_reclaim_pages()
318 chunk[cnt++] = epc_page; in sgx_reclaim_pages()
323 epc_page->flags &= ~SGX_EPC_PAGE_RECLAIMER_TRACKED; in sgx_reclaim_pages()
328 epc_page = chunk[i]; in sgx_reclaim_pages()
329 encl_page = epc_page->owner; in sgx_reclaim_pages()
331 if (!sgx_reclaimer_age(epc_page)) in sgx_reclaim_pages()
349 list_add_tail(&epc_page->list, &sgx_active_page_list); in sgx_reclaim_pages()
358 epc_page = chunk[i]; in sgx_reclaim_pages()
359 if (epc_page) in sgx_reclaim_pages()
360 sgx_reclaimer_block(epc_page); in sgx_reclaim_pages()
364 epc_page = chunk[i]; in sgx_reclaim_pages()
365 if (!epc_page) in sgx_reclaim_pages()
368 encl_page = epc_page->owner; in sgx_reclaim_pages()
369 sgx_reclaimer_write(epc_page, &backing[i]); in sgx_reclaim_pages()
372 epc_page->flags &= ~SGX_EPC_PAGE_RECLAIMER_TRACKED; in sgx_reclaim_pages()
374 sgx_free_epc_page(epc_page); in sgx_reclaim_pages()