All of lore.kernel.org
 help / color / mirror / Atom feed
From: Haitao Huang <haitao.huang@linux.intel.com>
To: jarkko@kernel.org, dave.hansen@linux.intel.com, tj@kernel.org,
	mkoutny@suse.com, linux-kernel@vger.kernel.org,
	linux-sgx@vger.kernel.org, x86@kernel.org,
	cgroups@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, hpa@zytor.com, sohil.mehta@intel.com
Cc: zhiquan1.li@intel.com, kristen@linux.intel.com,
	seanjc@google.com, zhanb@microsoft.com, anakrish@microsoft.com,
	mikko.ylinen@linux.intel.com, yangjie@microsoft.com,
	chrisyan@microsoft.com
Subject: [PATCH v8 11/15] x86/sgx: Abstract check for global reclaimable pages
Date: Mon, 29 Jan 2024 18:09:34 -0800	[thread overview]
Message-ID: <20240130020938.10025-12-haitao.huang@linux.intel.com> (raw)
In-Reply-To: <20240130020938.10025-1-haitao.huang@linux.intel.com>

From: Kristen Carlson Accardi <kristen@linux.intel.com>

To determine if any page available for reclamation at the global level,
only checking for emptiness of the global LRU is not adequate when pages
are tracked in multiple LRUs, one per cgroup. For this purpose, create a
new helper, sgx_can_reclaim(), currently only checks the global LRU,
later will check emptiness of LRUs of all cgroups when per-cgroup
tracking is turned on. Replace all the checks of the global LRU,
list_empty(&sgx_global_lru.reclaimable), with calls to
sgx_can_reclaim().

Co-developed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Co-developed-by: Haitao Huang <haitao.huang@linux.intel.com>
Signed-off-by: Haitao Huang <haitao.huang@linux.intel.com>
---
v7:
- Split this out from the big patch, #10 in V6. (Dave, Kai)
---
 arch/x86/kernel/cpu/sgx/main.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c
index 2279ae967707..6b0c26cac621 100644
--- a/arch/x86/kernel/cpu/sgx/main.c
+++ b/arch/x86/kernel/cpu/sgx/main.c
@@ -37,6 +37,11 @@ static inline struct sgx_epc_lru_list *sgx_lru_list(struct sgx_epc_page *epc_pag
 	return &sgx_global_lru;
 }
 
+static inline bool sgx_can_reclaim(void)
+{
+	return !list_empty(&sgx_global_lru.reclaimable);
+}
+
 static atomic_long_t sgx_nr_free_pages = ATOMIC_LONG_INIT(0);
 
 /* Nodes with one or more EPC sections. */
@@ -398,7 +403,7 @@ unsigned int sgx_reclaim_pages(struct sgx_epc_lru_list *lru, unsigned int *nr_to
 static bool sgx_should_reclaim(unsigned long watermark)
 {
 	return atomic_long_read(&sgx_nr_free_pages) < watermark &&
-	       !list_empty(&sgx_global_lru.reclaimable);
+		sgx_can_reclaim();
 }
 
 static void sgx_reclaim_pages_global(bool indirect)
@@ -601,7 +606,7 @@ struct sgx_epc_page *sgx_alloc_epc_page(void *owner, bool reclaim)
 			break;
 		}
 
-		if (list_empty(&sgx_global_lru.reclaimable)) {
+		if (!sgx_can_reclaim()) {
 			page = ERR_PTR(-ENOMEM);
 			break;
 		}
-- 
2.25.1


  parent reply	other threads:[~2024-01-30  2:09 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-30  2:09 [PATCH v8 00/15] Add Cgroup support for SGX EPC memory Haitao Huang
2024-01-30  2:09 ` [PATCH v8 01/15] cgroup/misc: Add per resource callbacks for CSS events Haitao Huang
2024-02-01 23:24   ` Jarkko Sakkinen
2024-02-02 16:34     ` Haitao Huang
2024-02-02 17:02       ` Tejun Heo
2024-02-12 19:31       ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 02/15] cgroup/misc: Export APIs for SGX driver Haitao Huang
2024-01-30  2:09 ` [PATCH v8 03/15] cgroup/misc: Add SGX EPC resource type Haitao Huang
2024-01-30  2:09 ` [PATCH v8 04/15] x86/sgx: Implement basic EPC misc cgroup functionality Haitao Huang
2024-01-30 15:22   ` Huang, Kai
2024-01-31  1:59     ` Haitao Huang
2024-02-01 23:27   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 05/15] x86/sgx: Add sgx_epc_lru_list to encapsulate LRU list Haitao Huang
2024-02-01 23:28   ` Jarkko Sakkinen
2024-02-02 16:52     ` Haitao Huang
2024-01-30  2:09 ` [PATCH v8 06/15] x86/sgx: Abstract tracking reclaimable pages in LRU Haitao Huang
2024-02-01 23:29   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 07/15] x86/sgx: Expose sgx_reclaim_pages() for cgroup Haitao Huang
2024-01-30 15:39   ` Huang, Kai
2024-01-31  1:35     ` Haitao Huang
2024-02-01 23:37   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 08/15] x86/sgx: Implement EPC reclamation flows " Haitao Huang
2024-02-01 23:39   ` Jarkko Sakkinen
2024-01-30  2:09 ` [PATCH v8 09/15] x86/sgx: Charge mem_cgroup for per-cgroup reclamation Haitao Huang
2024-01-30  2:09 ` [PATCH v8 10/15] x86/sgx: Add EPC reclamation in cgroup try_charge() Haitao Huang
2024-01-30  2:09 ` Haitao Huang [this message]
2024-01-30  2:09 ` [PATCH v8 12/15] x86/sgx: Expose sgx_epc_cgroup_reclaim_pages() for global reclaimer Haitao Huang
2024-01-30  2:09 ` [PATCH v8 13/15] x86/sgx: Turn on per-cgroup EPC reclamation Haitao Huang
2024-01-30  2:09 ` [PATCH v8 14/15] Docs/x86/sgx: Add description for cgroup support Haitao Huang
2024-01-30  2:09 ` [PATCH v8 15/15] selftests/sgx: Add scripts for EPC cgroup testing Haitao Huang

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=20240130020938.10025-12-haitao.huang@linux.intel.com \
    --to=haitao.huang@linux.intel.com \
    --cc=anakrish@microsoft.com \
    --cc=bp@alien8.de \
    --cc=cgroups@vger.kernel.org \
    --cc=chrisyan@microsoft.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jarkko@kernel.org \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sgx@vger.kernel.org \
    --cc=mikko.ylinen@linux.intel.com \
    --cc=mingo@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=seanjc@google.com \
    --cc=sohil.mehta@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=x86@kernel.org \
    --cc=yangjie@microsoft.com \
    --cc=zhanb@microsoft.com \
    --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: link
Be 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.