From: Haitao Huang <haitao.huang@linux.intel.com> To: jarkko@kernel.org, dave.hansen@linux.intel.com, tj@kernel.org, linux-kernel@vger.kernel.org, linux-sgx@vger.kernel.org, cgroups@vger.kernel.org, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com> Cc: kai.huang@intel.com, reinette.chatre@intel.com, Kristen Carlson Accardi <kristen@linux.intel.com>, zhiquan1.li@intel.com, seanjc@google.com Subject: [PATCH v3 06/28] x86/sgx: store unreclaimable EPC pages in sgx_epc_lru_lists Date: Wed, 12 Jul 2023 16:01:40 -0700 [thread overview] Message-ID: <20230712230202.47929-7-haitao.huang@linux.intel.com> (raw) In-Reply-To: <20230712230202.47929-1-haitao.huang@linux.intel.com> From: Kristen Carlson Accardi <kristen@linux.intel.com> When an OOM event occurs, all pages associated with an enclave will need to be freed, including pages that are not currently tracked by the reclaimer. A previous patch converted the SGX code to use a pair of generic "sgx_record/drop_epc_pages()" for storing the EPC pages that are tracked by the reclaimer. This patch utilizes those functions to store the remaining untracked pages to a new "unreclaimable" list stored with the struct sgx_epc_lru_lists struct. Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com> Signed-off-by: Haitao Huang <haitao.huang@linux.intel.com> V3: - Removed tracking virtual EPC pages in unreclaimable list as host kernel does not reclaim them. The EPC cgroups implemented later only blocks allocating for a guest if the limit is reached by returning -ENOMEM from sgx_alloc_epc_page() called by virt_epc, and does nothing else. Therefore, no need to track those in LRU lists. --- arch/x86/kernel/cpu/sgx/encl.c | 8 ++++++-- arch/x86/kernel/cpu/sgx/ioctl.c | 4 +++- arch/x86/kernel/cpu/sgx/main.c | 3 +++ arch/x86/kernel/cpu/sgx/sgx.h | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c index f68af9e37daa..edb8d8c1c229 100644 --- a/arch/x86/kernel/cpu/sgx/encl.c +++ b/arch/x86/kernel/cpu/sgx/encl.c @@ -252,7 +252,8 @@ static struct sgx_encl_page *__sgx_encl_load_page(struct sgx_encl *encl, epc_page = sgx_encl_eldu(&encl->secs, NULL); if (IS_ERR(epc_page)) return ERR_CAST(epc_page); - epc_page->flags |= SGX_EPC_OWNER_ENCL_PAGE; + sgx_record_epc_page(epc_page, SGX_EPC_OWNER_ENCL_PAGE | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); } epc_page = sgx_encl_eldu(entry, encl->secs.epc_page); @@ -724,6 +725,7 @@ void sgx_encl_release(struct kref *ref) xa_destroy(&encl->page_array); if (!encl->secs_child_cnt && encl->secs.epc_page) { + sgx_drop_epc_page(encl->secs.epc_page); sgx_encl_free_epc_page(encl->secs.epc_page); encl->secs.epc_page = NULL; } @@ -732,6 +734,7 @@ void sgx_encl_release(struct kref *ref) va_page = list_first_entry(&encl->va_pages, struct sgx_va_page, list); list_del(&va_page->list); + sgx_drop_epc_page(va_page->epc_page); sgx_encl_free_epc_page(va_page->epc_page); kfree(va_page); } @@ -1238,7 +1241,8 @@ struct sgx_epc_page *sgx_alloc_va_page(struct sgx_encl *encl, bool reclaim) sgx_encl_free_epc_page(epc_page); return ERR_PTR(-EFAULT); } - epc_page->flags |= SGX_EPC_OWNER_ENCL; + sgx_record_epc_page(epc_page, SGX_EPC_OWNER_ENCL | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); return epc_page; } diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c index dd7ab1c80db6..4e6d0c9d043a 100644 --- a/arch/x86/kernel/cpu/sgx/ioctl.c +++ b/arch/x86/kernel/cpu/sgx/ioctl.c @@ -48,6 +48,7 @@ void sgx_encl_shrink(struct sgx_encl *encl, struct sgx_va_page *va_page) encl->page_cnt--; if (va_page) { + sgx_drop_epc_page(va_page->epc_page); sgx_encl_free_epc_page(va_page->epc_page); list_del(&va_page->list); kfree(va_page); @@ -113,7 +114,8 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs) encl->attributes = secs->attributes; encl->attributes_mask = SGX_ATTR_UNPRIV_MASK; - encl->secs.epc_page->flags |= SGX_EPC_OWNER_ENCL_PAGE; + sgx_record_epc_page(encl->secs.epc_page, SGX_EPC_OWNER_ENCL_PAGE | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); /* Set only after completion, as encl->lock has not been taken. */ set_bit(SGX_ENCL_CREATED, &encl->flags); diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c index 371135665ff7..9252728865fa 100644 --- a/arch/x86/kernel/cpu/sgx/main.c +++ b/arch/x86/kernel/cpu/sgx/main.c @@ -268,6 +268,7 @@ static void sgx_reclaimer_write(struct sgx_epc_page *epc_page, goto out; sgx_encl_ewb(encl->secs.epc_page, &secs_backing); + sgx_drop_epc_page(encl->secs.epc_page); sgx_encl_free_epc_page(encl->secs.epc_page); encl->secs.epc_page = NULL; @@ -511,6 +512,8 @@ void sgx_record_epc_page(struct sgx_epc_page *page, unsigned long flags) page->flags |= flags; if (flags & SGX_EPC_PAGE_RECLAIMER_TRACKED) list_add_tail(&page->list, &sgx_global_lru.reclaimable); + else + list_add_tail(&page->list, &sgx_global_lru.unreclaimable); spin_unlock(&sgx_global_lru.lock); } diff --git a/arch/x86/kernel/cpu/sgx/sgx.h b/arch/x86/kernel/cpu/sgx/sgx.h index c60bbd995942..9f780b2c4cfe 100644 --- a/arch/x86/kernel/cpu/sgx/sgx.h +++ b/arch/x86/kernel/cpu/sgx/sgx.h @@ -23,6 +23,9 @@ #define SGX_NR_LOW_PAGES 32 #define SGX_NR_HIGH_PAGES 64 +/* Pages, which are not tracked by the page reclaimer. */ +#define SGX_EPC_PAGE_RECLAIMER_UNTRACKED 0 + /* Pages, which are being tracked by the page reclaimer. */ #define SGX_EPC_PAGE_RECLAIMER_TRACKED BIT(0) @@ -101,12 +104,14 @@ struct sgx_epc_lru_lists { /* Must acquire this lock to access */ spinlock_t lock; struct list_head reclaimable; + struct list_head unreclaimable; }; static inline void sgx_lru_init(struct sgx_epc_lru_lists *lrus) { spin_lock_init(&lrus->lock); INIT_LIST_HEAD(&lrus->reclaimable); + INIT_LIST_HEAD(&lrus->unreclaimable); } struct sgx_epc_page *__sgx_alloc_epc_page(void); -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Haitao Huang <haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> To: jarkko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, dave.hansen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sgx-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>, Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>, Borislav Petkov <bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>, x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org> Cc: kai.huang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, reinette.chatre-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, Kristen Carlson Accardi <kristen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>, zhiquan1.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, seanjc-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org Subject: [PATCH v3 06/28] x86/sgx: store unreclaimable EPC pages in sgx_epc_lru_lists Date: Wed, 12 Jul 2023 16:01:40 -0700 [thread overview] Message-ID: <20230712230202.47929-7-haitao.huang@linux.intel.com> (raw) In-Reply-To: <20230712230202.47929-1-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> From: Kristen Carlson Accardi <kristen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> When an OOM event occurs, all pages associated with an enclave will need to be freed, including pages that are not currently tracked by the reclaimer. A previous patch converted the SGX code to use a pair of generic "sgx_record/drop_epc_pages()" for storing the EPC pages that are tracked by the reclaimer. This patch utilizes those functions to store the remaining untracked pages to a new "unreclaimable" list stored with the struct sgx_epc_lru_lists struct. Signed-off-by: Kristen Carlson Accardi <kristen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> Signed-off-by: Haitao Huang <haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> V3: - Removed tracking virtual EPC pages in unreclaimable list as host kernel does not reclaim them. The EPC cgroups implemented later only blocks allocating for a guest if the limit is reached by returning -ENOMEM from sgx_alloc_epc_page() called by virt_epc, and does nothing else. Therefore, no need to track those in LRU lists. --- arch/x86/kernel/cpu/sgx/encl.c | 8 ++++++-- arch/x86/kernel/cpu/sgx/ioctl.c | 4 +++- arch/x86/kernel/cpu/sgx/main.c | 3 +++ arch/x86/kernel/cpu/sgx/sgx.h | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c index f68af9e37daa..edb8d8c1c229 100644 --- a/arch/x86/kernel/cpu/sgx/encl.c +++ b/arch/x86/kernel/cpu/sgx/encl.c @@ -252,7 +252,8 @@ static struct sgx_encl_page *__sgx_encl_load_page(struct sgx_encl *encl, epc_page = sgx_encl_eldu(&encl->secs, NULL); if (IS_ERR(epc_page)) return ERR_CAST(epc_page); - epc_page->flags |= SGX_EPC_OWNER_ENCL_PAGE; + sgx_record_epc_page(epc_page, SGX_EPC_OWNER_ENCL_PAGE | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); } epc_page = sgx_encl_eldu(entry, encl->secs.epc_page); @@ -724,6 +725,7 @@ void sgx_encl_release(struct kref *ref) xa_destroy(&encl->page_array); if (!encl->secs_child_cnt && encl->secs.epc_page) { + sgx_drop_epc_page(encl->secs.epc_page); sgx_encl_free_epc_page(encl->secs.epc_page); encl->secs.epc_page = NULL; } @@ -732,6 +734,7 @@ void sgx_encl_release(struct kref *ref) va_page = list_first_entry(&encl->va_pages, struct sgx_va_page, list); list_del(&va_page->list); + sgx_drop_epc_page(va_page->epc_page); sgx_encl_free_epc_page(va_page->epc_page); kfree(va_page); } @@ -1238,7 +1241,8 @@ struct sgx_epc_page *sgx_alloc_va_page(struct sgx_encl *encl, bool reclaim) sgx_encl_free_epc_page(epc_page); return ERR_PTR(-EFAULT); } - epc_page->flags |= SGX_EPC_OWNER_ENCL; + sgx_record_epc_page(epc_page, SGX_EPC_OWNER_ENCL | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); return epc_page; } diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c index dd7ab1c80db6..4e6d0c9d043a 100644 --- a/arch/x86/kernel/cpu/sgx/ioctl.c +++ b/arch/x86/kernel/cpu/sgx/ioctl.c @@ -48,6 +48,7 @@ void sgx_encl_shrink(struct sgx_encl *encl, struct sgx_va_page *va_page) encl->page_cnt--; if (va_page) { + sgx_drop_epc_page(va_page->epc_page); sgx_encl_free_epc_page(va_page->epc_page); list_del(&va_page->list); kfree(va_page); @@ -113,7 +114,8 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs) encl->attributes = secs->attributes; encl->attributes_mask = SGX_ATTR_UNPRIV_MASK; - encl->secs.epc_page->flags |= SGX_EPC_OWNER_ENCL_PAGE; + sgx_record_epc_page(encl->secs.epc_page, SGX_EPC_OWNER_ENCL_PAGE | + SGX_EPC_PAGE_RECLAIMER_UNTRACKED); /* Set only after completion, as encl->lock has not been taken. */ set_bit(SGX_ENCL_CREATED, &encl->flags); diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c index 371135665ff7..9252728865fa 100644 --- a/arch/x86/kernel/cpu/sgx/main.c +++ b/arch/x86/kernel/cpu/sgx/main.c @@ -268,6 +268,7 @@ static void sgx_reclaimer_write(struct sgx_epc_page *epc_page, goto out; sgx_encl_ewb(encl->secs.epc_page, &secs_backing); + sgx_drop_epc_page(encl->secs.epc_page); sgx_encl_free_epc_page(encl->secs.epc_page); encl->secs.epc_page = NULL; @@ -511,6 +512,8 @@ void sgx_record_epc_page(struct sgx_epc_page *page, unsigned long flags) page->flags |= flags; if (flags & SGX_EPC_PAGE_RECLAIMER_TRACKED) list_add_tail(&page->list, &sgx_global_lru.reclaimable); + else + list_add_tail(&page->list, &sgx_global_lru.unreclaimable); spin_unlock(&sgx_global_lru.lock); } diff --git a/arch/x86/kernel/cpu/sgx/sgx.h b/arch/x86/kernel/cpu/sgx/sgx.h index c60bbd995942..9f780b2c4cfe 100644 --- a/arch/x86/kernel/cpu/sgx/sgx.h +++ b/arch/x86/kernel/cpu/sgx/sgx.h @@ -23,6 +23,9 @@ #define SGX_NR_LOW_PAGES 32 #define SGX_NR_HIGH_PAGES 64 +/* Pages, which are not tracked by the page reclaimer. */ +#define SGX_EPC_PAGE_RECLAIMER_UNTRACKED 0 + /* Pages, which are being tracked by the page reclaimer. */ #define SGX_EPC_PAGE_RECLAIMER_TRACKED BIT(0) @@ -101,12 +104,14 @@ struct sgx_epc_lru_lists { /* Must acquire this lock to access */ spinlock_t lock; struct list_head reclaimable; + struct list_head unreclaimable; }; static inline void sgx_lru_init(struct sgx_epc_lru_lists *lrus) { spin_lock_init(&lrus->lock); INIT_LIST_HEAD(&lrus->reclaimable); + INIT_LIST_HEAD(&lrus->unreclaimable); } struct sgx_epc_page *__sgx_alloc_epc_page(void); -- 2.25.1
next prev parent reply other threads:[~2023-07-12 23:02 UTC|newest] Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-07-12 23:01 [PATCH v3 00/28] Add Cgroup support for SGX EPC memory Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 01/28] x86/sgx: Store struct sgx_encl when allocating new VA pages Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 11:14 ` Jarkko Sakkinen 2023-07-17 11:14 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 02/28] x86/sgx: Add EPC page flags to identify owner type Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 12:41 ` Jarkko Sakkinen 2023-07-17 12:41 ` Jarkko Sakkinen 2023-07-17 12:43 ` Jarkko Sakkinen 2023-07-17 12:43 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 03/28] x86/sgx: Add 'struct sgx_epc_lru_lists' to encapsulate lru list(s) Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 12:45 ` Jarkko Sakkinen 2023-07-17 12:45 ` Jarkko Sakkinen 2023-07-17 13:23 ` Haitao Huang 2023-07-17 13:23 ` Haitao Huang 2023-07-17 14:39 ` Jarkko Sakkinen 2023-07-17 14:39 ` Jarkko Sakkinen 2023-07-24 10:04 ` Huang, Kai 2023-07-24 10:04 ` Huang, Kai 2023-07-24 14:55 ` Haitao Huang 2023-07-24 14:55 ` Haitao Huang 2023-07-24 23:31 ` Huang, Kai 2023-07-31 20:35 ` Haitao Huang 2023-07-31 20:35 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 04/28] x86/sgx: Use sgx_epc_lru_lists for existing active page list Haitao Huang 2023-07-17 12:47 ` Jarkko Sakkinen 2023-07-17 12:47 ` Jarkko Sakkinen 2023-07-31 20:43 ` Haitao Huang 2023-07-31 20:43 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 05/28] x86/sgx: Store reclaimable epc pages in sgx_epc_lru_lists Haitao Huang 2023-07-12 23:01 ` Haitao Huang [this message] 2023-07-12 23:01 ` [PATCH v3 06/28] x86/sgx: store unreclaimable EPC " Haitao Huang 2023-07-12 23:01 ` [PATCH v3 07/28] x86/sgx: Introduce EPC page states Haitao Huang 2023-07-12 23:01 ` [PATCH v3 08/28] x86/sgx: Introduce RECLAIM_IN_PROGRESS state Haitao Huang 2023-07-12 23:01 ` [PATCH v3 09/28] x86/sgx: Use a list to track to-be-reclaimed pages Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 10/28] x86/sgx: Allow reclaiming up to 32 pages, but scan 16 by default Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 11/28] x85/sgx: Return the number of EPC pages that were successfully reclaimed Haitao Huang 2023-07-29 12:47 ` Pavel Machek 2023-07-31 11:10 ` Jarkko Sakkinen 2023-07-31 11:10 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 12/28] x86/sgx: Add option to ignore age of page during EPC reclaim Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 13/28] x86/sgx: Prepare for multiple LRUs Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 14/28] x86/sgx: Expose sgx_reclaim_pages() for use by EPC cgroup Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 15/28] x86/sgx: Add helper to grab pages from an arbitrary EPC LRU Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 16/28] x86/sgx: Add EPC OOM path to forcefully reclaim EPC Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 17/28] x86/sgx: fix a NULL pointer Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 12:48 ` Jarkko Sakkinen 2023-07-17 12:48 ` Jarkko Sakkinen 2023-07-17 12:49 ` Jarkko Sakkinen 2023-07-17 12:49 ` Jarkko Sakkinen 2023-07-17 13:14 ` Haitao Huang 2023-07-17 14:33 ` Jarkko Sakkinen 2023-07-17 14:33 ` Jarkko Sakkinen 2023-07-17 15:49 ` Dave Hansen 2023-07-17 15:49 ` Dave Hansen 2023-07-17 18:49 ` Haitao Huang 2023-07-17 18:52 ` Jarkko Sakkinen 2023-07-17 18:52 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 18/28] cgroup/misc: Fix an overflow Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 13:15 ` Jarkko Sakkinen 2023-07-17 13:15 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 19/28] cgroup/misc: Add per resource callbacks for CSS events Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-17 13:16 ` Jarkko Sakkinen 2023-07-17 13:16 ` Jarkko Sakkinen 2023-07-12 23:01 ` [PATCH v3 20/28] cgroup/misc: Add SGX EPC resource type and export APIs for SGX driver Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-12 23:01 ` [PATCH v3 21/28] x86/sgx: Limit process EPC usage with misc cgroup controller Haitao Huang 2023-07-12 23:01 ` Haitao Huang 2023-07-13 0:03 ` Randy Dunlap 2023-07-13 0:03 ` Randy Dunlap 2023-08-17 15:12 ` Mikko Ylinen 2023-07-12 23:01 ` [PATCH v3 22/28] Docs/x86/sgx: Add description for cgroup support Haitao Huang 2023-07-13 0:10 ` Randy Dunlap 2023-07-14 20:01 ` Haitao Huang 2023-07-14 20:26 ` Haitao Huang 2023-08-17 15:18 ` Mikko Ylinen 2023-08-17 15:18 ` Mikko Ylinen 2023-07-12 23:01 ` [PATCH v3 23/28] selftests/sgx: Retry the ioctl()'s returned with EAGAIN Haitao Huang 2023-07-12 23:01 ` [PATCH v3 24/28] selftests/sgx: Move ENCL_HEAP_SIZE_DEFAULT to main.c Haitao Huang 2023-07-12 23:01 ` [PATCH v3 25/28] selftests/sgx: Use encl->encl_size in sigstruct.c Haitao Huang 2023-07-12 23:02 ` [PATCH v3 26/28] selftests/sgx: Include the dynamic heap size to the ELRANGE calculation Haitao Huang 2023-07-12 23:02 ` [PATCH v3 27/28] selftests/sgx: Add SGX selftest augment_via_eaccept_long Haitao Huang 2023-07-12 23:02 ` [PATCH v3 28/28] selftests/sgx: Add scripts for epc cgroup testing Haitao Huang 2023-07-17 11:02 ` [PATCH v3 00/28] Add Cgroup support for SGX EPC memory Jarkko Sakkinen 2023-07-17 11:02 ` Jarkko Sakkinen 2023-07-24 19:09 ` Sohil Mehta 2023-07-24 19:09 ` Sohil Mehta 2023-07-25 17:16 ` Haitao Huang 2023-08-17 15:04 ` Mikko Ylinen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230712230202.47929-7-haitao.huang@linux.intel.com \ --to=haitao.huang@linux.intel.com \ --cc=bp@alien8.de \ --cc=cgroups@vger.kernel.org \ --cc=dave.hansen@linux.intel.com \ --cc=hpa@zytor.com \ --cc=jarkko@kernel.org \ --cc=kai.huang@intel.com \ --cc=kristen@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-sgx@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=reinette.chatre@intel.com \ --cc=seanjc@google.com \ --cc=tglx@linutronix.de \ --cc=tj@kernel.org \ --cc=x86@kernel.org \ --cc=zhiquan1.li@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.