Lines Matching refs:encl
86 struct sgx_encl *encl = page->encl; in sgx_reclaimer_age() local
91 idx = srcu_read_lock(&encl->srcu); in sgx_reclaimer_age()
93 list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) { in sgx_reclaimer_age()
107 srcu_read_unlock(&encl->srcu, idx); in sgx_reclaimer_age()
119 struct sgx_encl *encl = page->encl; in sgx_reclaimer_block() local
126 mm_list_version = encl->mm_list_version; in sgx_reclaimer_block()
131 idx = srcu_read_lock(&encl->srcu); in sgx_reclaimer_block()
133 list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) { in sgx_reclaimer_block()
140 if (!ret && encl == vma->vm_private_data) in sgx_reclaimer_block()
148 srcu_read_unlock(&encl->srcu, idx); in sgx_reclaimer_block()
149 } while (unlikely(encl->mm_list_version != mm_list_version)); in sgx_reclaimer_block()
151 mutex_lock(&encl->lock); in sgx_reclaimer_block()
157 mutex_unlock(&encl->lock); in sgx_reclaimer_block()
186 static const cpumask_t *sgx_encl_ewb_cpumask(struct sgx_encl *encl) in sgx_encl_ewb_cpumask() argument
188 cpumask_t *cpumask = &encl->cpumask; in sgx_encl_ewb_cpumask()
199 idx = srcu_read_lock(&encl->srcu); in sgx_encl_ewb_cpumask()
201 list_for_each_entry_rcu(encl_mm, &encl->mm_list, list) { in sgx_encl_ewb_cpumask()
210 srcu_read_unlock(&encl->srcu, idx); in sgx_encl_ewb_cpumask()
229 struct sgx_encl *encl = encl_page->encl; in sgx_encl_ewb() local
237 va_page = list_first_entry(&encl->va_pages, struct sgx_va_page, in sgx_encl_ewb()
242 list_move_tail(&va_page->list, &encl->va_pages); in sgx_encl_ewb()
246 ret = __etrack(sgx_get_epc_virt_addr(encl->secs.epc_page)); in sgx_encl_ewb()
261 on_each_cpu_mask(sgx_encl_ewb_cpumask(encl), in sgx_encl_ewb()
282 struct sgx_encl *encl = encl_page->encl; in sgx_reclaimer_write() local
286 mutex_lock(&encl->lock); in sgx_reclaimer_write()
290 encl->secs_child_cnt--; in sgx_reclaimer_write()
292 if (!encl->secs_child_cnt && test_bit(SGX_ENCL_INITIALIZED, &encl->flags)) { in sgx_reclaimer_write()
293 ret = sgx_encl_get_backing(encl, PFN_DOWN(encl->size), in sgx_reclaimer_write()
298 sgx_encl_ewb(encl->secs.epc_page, &secs_backing); in sgx_reclaimer_write()
300 sgx_encl_free_epc_page(encl->secs.epc_page); in sgx_reclaimer_write()
301 encl->secs.epc_page = NULL; in sgx_reclaimer_write()
307 mutex_unlock(&encl->lock); in sgx_reclaimer_write()
346 if (kref_get_unless_zero(&encl_page->encl->refcount) != 0) in sgx_reclaim_pages()
363 page_index = PFN_DOWN(encl_page->desc - encl_page->encl->base); in sgx_reclaim_pages()
364 ret = sgx_encl_get_backing(encl_page->encl, page_index, &backing[i]); in sgx_reclaim_pages()
368 mutex_lock(&encl_page->encl->lock); in sgx_reclaim_pages()
370 mutex_unlock(&encl_page->encl->lock); in sgx_reclaim_pages()
378 kref_put(&encl_page->encl->refcount, sgx_encl_release); in sgx_reclaim_pages()
398 kref_put(&encl_page->encl->refcount, sgx_encl_release); in sgx_reclaim_pages()