Lines Matching refs:epc_page

82 static bool sgx_reclaimer_age(struct sgx_epc_page *epc_page)  in sgx_reclaimer_age()  argument
84 struct sgx_encl_page *page = epc_page->owner; in sgx_reclaimer_age()
114 static void sgx_reclaimer_block(struct sgx_epc_page *epc_page) in sgx_reclaimer_block() argument
116 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()
224 static void sgx_encl_ewb(struct sgx_epc_page *epc_page, in sgx_encl_ewb() argument
227 struct sgx_encl_page *encl_page = epc_page->owner; in sgx_encl_ewb()
239 va_slot = sgx_get_epc_virt_addr(va_page->epc_page) + va_offset; in sgx_encl_ewb()
243 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
245 ret = __etrack(sgx_get_epc_virt_addr(encl->secs.epc_page)); in sgx_encl_ewb()
251 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
262 ret = __sgx_encl_ewb(epc_page, va_slot, backing); in sgx_encl_ewb()
277 static void sgx_reclaimer_write(struct sgx_epc_page *epc_page, in sgx_reclaimer_write() argument
280 struct sgx_encl_page *encl_page = epc_page->owner; in sgx_reclaimer_write()
287 sgx_encl_ewb(epc_page, backing); in sgx_reclaimer_write()
288 encl_page->epc_page = NULL; in sgx_reclaimer_write()
297 sgx_encl_ewb(encl->secs.epc_page, &secs_backing); in sgx_reclaimer_write()
299 sgx_encl_free_epc_page(encl->secs.epc_page); in sgx_reclaimer_write()
300 encl->secs.epc_page = NULL; in sgx_reclaimer_write()
328 struct sgx_epc_page *epc_page; in sgx_reclaim_pages() local
340 epc_page = list_first_entry(&sgx_active_page_list, in sgx_reclaim_pages()
342 list_del_init(&epc_page->list); in sgx_reclaim_pages()
343 encl_page = epc_page->owner; in sgx_reclaim_pages()
346 chunk[cnt++] = epc_page; in sgx_reclaim_pages()
351 epc_page->flags &= ~SGX_EPC_PAGE_RECLAIMER_TRACKED; in sgx_reclaim_pages()
356 epc_page = chunk[i]; in sgx_reclaim_pages()
357 encl_page = epc_page->owner; in sgx_reclaim_pages()
359 if (!sgx_reclaimer_age(epc_page)) in sgx_reclaim_pages()
374 list_add_tail(&epc_page->list, &sgx_active_page_list); in sgx_reclaim_pages()
383 epc_page = chunk[i]; in sgx_reclaim_pages()
384 if (epc_page) in sgx_reclaim_pages()
385 sgx_reclaimer_block(epc_page); in sgx_reclaim_pages()
389 epc_page = chunk[i]; in sgx_reclaim_pages()
390 if (!epc_page) in sgx_reclaim_pages()
393 encl_page = epc_page->owner; in sgx_reclaim_pages()
394 sgx_reclaimer_write(epc_page, &backing[i]); in sgx_reclaim_pages()
398 epc_page->flags &= ~SGX_EPC_PAGE_RECLAIMER_TRACKED; in sgx_reclaim_pages()
400 section = &sgx_epc_sections[epc_page->section]; in sgx_reclaim_pages()
404 list_add_tail(&epc_page->list, &node->free_page_list); in sgx_reclaim_pages()