From: Rick Edgecombe <rick.p.edgecombe@intel.com>
To: dave.hansen@intel.com, luto@kernel.org, peterz@infradead.org,
linux-mm@kvack.org, x86@kernel.org, akpm@linux-foundation.org,
linux-hardening@vger.kernel.org,
kernel-hardening@lists.openwall.com
Cc: ira.weiny@intel.com, rppt@kernel.org, dan.j.williams@intel.com,
linux-kernel@vger.kernel.org,
Rick Edgecombe <rick.p.edgecombe@intel.com>
Subject: [PATCH RFC 2/9] list: Support list head not in object for list_lru
Date: Tue, 4 May 2021 17:30:25 -0700 [thread overview]
Message-ID: <20210505003032.489164-3-rick.p.edgecombe@intel.com> (raw)
In-Reply-To: <20210505003032.489164-1-rick.p.edgecombe@intel.com>
In future patches, there will be a need to keep track of objects with
list_lru where the list_head is not in the object (will be in struct
page). Since list_lru automatically determines the node id from the
list_head, this will fail when using struct page.
So create a new function in list_lru, list_lru_add_node(), that allows
the node id of the item to be passed in. Otherwise it behaves exactly
like list_lru_add().
Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
---
include/linux/list_lru.h | 13 +++++++++++++
mm/list_lru.c | 10 ++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/include/linux/list_lru.h b/include/linux/list_lru.h
index 4bde44a5024b..7ad149b22223 100644
--- a/include/linux/list_lru.h
+++ b/include/linux/list_lru.h
@@ -90,6 +90,19 @@ void memcg_drain_all_list_lrus(int src_idx, struct mem_cgroup *dst_memcg);
*/
bool list_lru_add(struct list_lru *lru, struct list_head *item);
+/**
+ * list_lru_add_node: add an element to the lru list's tail
+ * @list_lru: the lru pointer
+ * @item: the item to be added.
+ * @nid: the node id of the item
+ *
+ * Like list_lru_add, but takes the node id as parameter instead of
+ * calculating it from the list_head passed in.
+ *
+ * Return value: true if the list was updated, false otherwise
+ */
+bool list_lru_add_node(struct list_lru *lru, struct list_head *item, int nid);
+
/**
* list_lru_del: delete an element to the lru list
* @list_lru: the lru pointer
diff --git a/mm/list_lru.c b/mm/list_lru.c
index fd5b19dcfc72..8e32a6fc1527 100644
--- a/mm/list_lru.c
+++ b/mm/list_lru.c
@@ -112,9 +112,8 @@ list_lru_from_kmem(struct list_lru_node *nlru, void *ptr,
}
#endif /* CONFIG_MEMCG_KMEM */
-bool list_lru_add(struct list_lru *lru, struct list_head *item)
+bool list_lru_add_node(struct list_lru *lru, struct list_head *item, int nid)
{
- int nid = page_to_nid(virt_to_page(item));
struct list_lru_node *nlru = &lru->node[nid];
struct mem_cgroup *memcg;
struct list_lru_one *l;
@@ -134,6 +133,13 @@ bool list_lru_add(struct list_lru *lru, struct list_head *item)
spin_unlock(&nlru->lock);
return false;
}
+
+bool list_lru_add(struct list_lru *lru, struct list_head *item)
+{
+ int nid = page_to_nid(virt_to_page(item));
+
+ return list_lru_add_node(lru, item, nid);
+}
EXPORT_SYMBOL_GPL(list_lru_add);
bool list_lru_del(struct list_lru *lru, struct list_head *item)
--
2.30.2
next prev parent reply other threads:[~2021-05-05 0:32 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-05 0:30 [PATCH RFC 0/9] PKS write protected page tables Rick Edgecombe
2021-05-05 0:30 ` [PATCH RFC 1/9] list: Support getting most recent element in list_lru Rick Edgecombe
2021-05-05 0:30 ` Rick Edgecombe [this message]
2021-05-05 0:30 ` [PATCH RFC 3/9] x86/mm/cpa: Add grouped page allocations Rick Edgecombe
2021-05-05 12:08 ` Mike Rapoport
2021-05-05 13:09 ` Peter Zijlstra
2021-05-05 18:45 ` Mike Rapoport
2021-05-05 21:57 ` Edgecombe, Rick P
2021-05-09 9:39 ` Mike Rapoport
2021-05-10 19:38 ` Edgecombe, Rick P
2021-05-05 0:30 ` [PATCH RFC 4/9] mm: Explicitly zero page table lock ptr Rick Edgecombe
2021-05-05 0:30 ` [PATCH RFC 5/9] x86, mm: Use cache of page tables Rick Edgecombe
2021-05-05 8:51 ` Peter Zijlstra
2021-05-05 12:09 ` Mike Rapoport
2021-05-05 13:19 ` Peter Zijlstra
2021-05-05 21:54 ` Edgecombe, Rick P
2021-05-06 17:59 ` Matthew Wilcox
2021-05-06 18:24 ` Shakeel Butt
2021-05-07 16:27 ` Edgecombe, Rick P
2021-05-05 0:30 ` [PATCH RFC 6/9] x86/mm/cpa: Add set_memory_pks() Rick Edgecombe
2021-05-05 0:30 ` [PATCH RFC 7/9] x86/mm/cpa: Add perm callbacks to grouped pages Rick Edgecombe
2021-05-05 0:30 ` [PATCH RFC 8/9] x86, mm: Protect page tables with PKS Rick Edgecombe
2021-05-05 0:30 ` [PATCH RFC 9/9] x86, cpa: PKS protect direct map page tables Rick Edgecombe
2021-05-05 2:03 ` [PATCH RFC 0/9] PKS write protected " Ira Weiny
2021-05-05 6:25 ` Kees Cook
2021-05-05 8:37 ` Peter Zijlstra
2021-05-05 18:38 ` Kees Cook
2021-05-05 19:51 ` Edgecombe, Rick P
2021-05-06 0:00 ` Ira Weiny
2021-05-05 11:08 ` Vlastimil Babka
2021-05-05 11:56 ` Peter Zijlstra
2021-05-05 19:46 ` Edgecombe, Rick P
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=20210505003032.489164-3-rick.p.edgecombe@intel.com \
--to=rick.p.edgecombe@intel.com \
--cc=akpm@linux-foundation.org \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=ira.weiny@intel.com \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luto@kernel.org \
--cc=peterz@infradead.org \
--cc=rppt@kernel.org \
--cc=x86@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).