All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yu Zhao <yuzhao@google.com>
To: Stephen Rothwell <sfr@rothwell.id.au>, linux-mm@kvack.org
Cc: "Andi Kleen" <ak@linux.intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Aneesh Kumar" <aneesh.kumar@linux.ibm.com>,
	"Barry Song" <21cnbao@gmail.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"Hillf Danton" <hdanton@sina.com>, "Jens Axboe" <axboe@kernel.dk>,
	"Jesse Barnes" <jsbarnes@google.com>,
	"Johannes Weiner" <hannes@cmpxchg.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Matthew Wilcox" <willy@infradead.org>,
	"Mel Gorman" <mgorman@suse.de>,
	"Michael Larabel" <Michael@michaellarabel.com>,
	"Michal Hocko" <mhocko@kernel.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Rik van Riel" <riel@surriel.com>,
	"Vlastimil Babka" <vbabka@suse.cz>,
	"Will Deacon" <will@kernel.org>,
	"Ying Huang" <ying.huang@intel.com>,
	linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, page-reclaim@google.com,
	x86@kernel.org, "Yu Zhao" <yuzhao@google.com>,
	"Barry Song" <baohua@kernel.org>,
	"Brian Geffon" <bgeffon@google.com>,
	"Jan Alexander Steffens" <heftig@archlinux.org>,
	"Oleksandr Natalenko" <oleksandr@natalenko.name>,
	"Steven Barrett" <steven@liquorix.net>,
	"Suleiman Souhlal" <suleiman@google.com>,
	"Daniel Byrne" <djbyrne@mtu.edu>,
	"Donald Carr" <d@chaos-reins.com>,
	"Holger Hoffstätte" <holger@applied-asynchrony.com>,
	"Konstantin Kharlamov" <Hi-Angel@yandex.ru>,
	"Shuang Zhai" <szhai2@cs.rochester.edu>,
	"Sofia Trinh" <sofia.trinh@edi.works>,
	"Vaibhav Jain" <vaibhav@linux.ibm.com>
Subject: [PATCH v10 01/14] mm: x86, arm64: add arch_has_hw_pte_young()
Date: Wed,  6 Apr 2022 21:15:13 -0600	[thread overview]
Message-ID: <20220407031525.2368067-2-yuzhao@google.com> (raw)
In-Reply-To: <20220407031525.2368067-1-yuzhao@google.com>

Some architectures automatically set the accessed bit in PTEs, e.g.,
x86 and arm64 v8.2. On architectures that do not have this capability,
clearing the accessed bit in a PTE usually triggers a page fault
following the TLB miss of this PTE (to emulate the accessed bit).

Being aware of this capability can help make better decisions, e.g.,
whether to spread the work out over a period of time to reduce bursty
page faults when trying to clear the accessed bit in many PTEs.

Note that theoretically this capability can be unreliable, e.g.,
hotplugged CPUs might be different from builtin ones. Therefore it
should not be used in architecture-independent code that involves
correctness, e.g., to determine whether TLB flushes are required (in
combination with the accessed bit).

Signed-off-by: Yu Zhao <yuzhao@google.com>
Reviewed-by: Barry Song <baohua@kernel.org>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Acked-by: Will Deacon <will@kernel.org>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
---
 arch/arm64/include/asm/pgtable.h | 14 ++------------
 arch/x86/include/asm/pgtable.h   |  6 +++---
 include/linux/pgtable.h          | 13 +++++++++++++
 mm/memory.c                      | 14 +-------------
 4 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 94e147e5456c..85d509a08ce3 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -999,23 +999,13 @@ static inline void update_mmu_cache(struct vm_area_struct *vma,
  * page after fork() + CoW for pfn mappings. We don't always have a
  * hardware-managed access flag on arm64.
  */
-static inline bool arch_faults_on_old_pte(void)
-{
-	WARN_ON(preemptible());
-
-	return !cpu_has_hw_af();
-}
-#define arch_faults_on_old_pte		arch_faults_on_old_pte
+#define arch_has_hw_pte_young		cpu_has_hw_af
 
 /*
  * Experimentally, it's cheap to set the access flag in hardware and we
  * benefit from prefaulting mappings as 'old' to start with.
  */
-static inline bool arch_wants_old_prefaulted_pte(void)
-{
-	return !arch_faults_on_old_pte();
-}
-#define arch_wants_old_prefaulted_pte	arch_wants_old_prefaulted_pte
+#define arch_wants_old_prefaulted_pte	cpu_has_hw_af
 
 static inline bool pud_sect_supported(void)
 {
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 62ab07e24aef..016606a0cf20 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -1424,10 +1424,10 @@ static inline bool arch_has_pfn_modify_check(void)
 	return boot_cpu_has_bug(X86_BUG_L1TF);
 }
 
-#define arch_faults_on_old_pte arch_faults_on_old_pte
-static inline bool arch_faults_on_old_pte(void)
+#define arch_has_hw_pte_young arch_has_hw_pte_young
+static inline bool arch_has_hw_pte_young(void)
 {
-	return false;
+	return true;
 }
 
 #endif	/* __ASSEMBLY__ */
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index f4f4077b97aa..79f64dcff07d 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -259,6 +259,19 @@ static inline int pmdp_clear_flush_young(struct vm_area_struct *vma,
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 #endif
 
+#ifndef arch_has_hw_pte_young
+/*
+ * Return whether the accessed bit is supported on the local CPU.
+ *
+ * This stub assumes accessing through an old PTE triggers a page fault.
+ * Architectures that automatically set the access bit should overwrite it.
+ */
+static inline bool arch_has_hw_pte_young(void)
+{
+	return false;
+}
+#endif
+
 #ifndef __HAVE_ARCH_PTEP_CLEAR
 static inline void ptep_clear(struct mm_struct *mm, unsigned long addr,
 			      pte_t *ptep)
diff --git a/mm/memory.c b/mm/memory.c
index 76e3af9639d9..44a1ec7a2cac 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -122,18 +122,6 @@ int randomize_va_space __read_mostly =
 					2;
 #endif
 
-#ifndef arch_faults_on_old_pte
-static inline bool arch_faults_on_old_pte(void)
-{
-	/*
-	 * Those arches which don't have hw access flag feature need to
-	 * implement their own helper. By default, "true" means pagefault
-	 * will be hit on old pte.
-	 */
-	return true;
-}
-#endif
-
 #ifndef arch_wants_old_prefaulted_pte
 static inline bool arch_wants_old_prefaulted_pte(void)
 {
@@ -2784,7 +2772,7 @@ static inline bool cow_user_page(struct page *dst, struct page *src,
 	 * On architectures with software "accessed" bits, we would
 	 * take a double page fault, so mark it accessed here.
 	 */
-	if (arch_faults_on_old_pte() && !pte_young(vmf->orig_pte)) {
+	if (!arch_has_hw_pte_young() && !pte_young(vmf->orig_pte)) {
 		pte_t entry;
 
 		vmf->pte = pte_offset_map_lock(mm, vmf->pmd, addr, &vmf->ptl);
-- 
2.35.1.1094.g7c7d902a7c-goog


WARNING: multiple messages have this Message-ID (diff)
From: Yu Zhao <yuzhao@google.com>
To: Stephen Rothwell <sfr@rothwell.id.au>, linux-mm@kvack.org
Cc: "Andi Kleen" <ak@linux.intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Aneesh Kumar" <aneesh.kumar@linux.ibm.com>,
	"Barry Song" <21cnbao@gmail.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"Hillf Danton" <hdanton@sina.com>, "Jens Axboe" <axboe@kernel.dk>,
	"Jesse Barnes" <jsbarnes@google.com>,
	"Johannes Weiner" <hannes@cmpxchg.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Matthew Wilcox" <willy@infradead.org>,
	"Mel Gorman" <mgorman@suse.de>,
	"Michael Larabel" <Michael@michaellarabel.com>,
	"Michal Hocko" <mhocko@kernel.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Rik van Riel" <riel@surriel.com>,
	"Vlastimil Babka" <vbabka@suse.cz>,
	"Will Deacon" <will@kernel.org>,
	"Ying Huang" <ying.huang@intel.com>,
	linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, page-reclaim@google.com,
	x86@kernel.org, "Yu Zhao" <yuzhao@google.com>,
	"Barry Song" <baohua@kernel.org>,
	"Brian Geffon" <bgeffon@google.com>,
	"Jan Alexander Steffens" <heftig@archlinux.org>,
	"Oleksandr Natalenko" <oleksandr@natalenko.name>,
	"Steven Barrett" <steven@liquorix.net>,
	"Suleiman Souhlal" <suleiman@google.com>,
	"Daniel Byrne" <djbyrne@mtu.edu>,
	"Donald Carr" <d@chaos-reins.com>,
	"Holger Hoffstätte" <holger@applied-asynchrony.com>,
	"Konstantin Kharlamov" <Hi-Angel@yandex.ru>,
	"Shuang Zhai" <szhai2@cs.rochester.edu>,
	"Sofia Trinh" <sofia.trinh@edi.works>,
	"Vaibhav Jain" <vaibhav@linux.ibm.com>
Subject: [PATCH v10 01/14] mm: x86, arm64: add arch_has_hw_pte_young()
Date: Wed,  6 Apr 2022 21:15:13 -0600	[thread overview]
Message-ID: <20220407031525.2368067-2-yuzhao@google.com> (raw)
In-Reply-To: <20220407031525.2368067-1-yuzhao@google.com>

Some architectures automatically set the accessed bit in PTEs, e.g.,
x86 and arm64 v8.2. On architectures that do not have this capability,
clearing the accessed bit in a PTE usually triggers a page fault
following the TLB miss of this PTE (to emulate the accessed bit).

Being aware of this capability can help make better decisions, e.g.,
whether to spread the work out over a period of time to reduce bursty
page faults when trying to clear the accessed bit in many PTEs.

Note that theoretically this capability can be unreliable, e.g.,
hotplugged CPUs might be different from builtin ones. Therefore it
should not be used in architecture-independent code that involves
correctness, e.g., to determine whether TLB flushes are required (in
combination with the accessed bit).

Signed-off-by: Yu Zhao <yuzhao@google.com>
Reviewed-by: Barry Song <baohua@kernel.org>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Acked-by: Will Deacon <will@kernel.org>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
---
 arch/arm64/include/asm/pgtable.h | 14 ++------------
 arch/x86/include/asm/pgtable.h   |  6 +++---
 include/linux/pgtable.h          | 13 +++++++++++++
 mm/memory.c                      | 14 +-------------
 4 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 94e147e5456c..85d509a08ce3 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -999,23 +999,13 @@ static inline void update_mmu_cache(struct vm_area_struct *vma,
  * page after fork() + CoW for pfn mappings. We don't always have a
  * hardware-managed access flag on arm64.
  */
-static inline bool arch_faults_on_old_pte(void)
-{
-	WARN_ON(preemptible());
-
-	return !cpu_has_hw_af();
-}
-#define arch_faults_on_old_pte		arch_faults_on_old_pte
+#define arch_has_hw_pte_young		cpu_has_hw_af
 
 /*
  * Experimentally, it's cheap to set the access flag in hardware and we
  * benefit from prefaulting mappings as 'old' to start with.
  */
-static inline bool arch_wants_old_prefaulted_pte(void)
-{
-	return !arch_faults_on_old_pte();
-}
-#define arch_wants_old_prefaulted_pte	arch_wants_old_prefaulted_pte
+#define arch_wants_old_prefaulted_pte	cpu_has_hw_af
 
 static inline bool pud_sect_supported(void)
 {
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 62ab07e24aef..016606a0cf20 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -1424,10 +1424,10 @@ static inline bool arch_has_pfn_modify_check(void)
 	return boot_cpu_has_bug(X86_BUG_L1TF);
 }
 
-#define arch_faults_on_old_pte arch_faults_on_old_pte
-static inline bool arch_faults_on_old_pte(void)
+#define arch_has_hw_pte_young arch_has_hw_pte_young
+static inline bool arch_has_hw_pte_young(void)
 {
-	return false;
+	return true;
 }
 
 #endif	/* __ASSEMBLY__ */
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index f4f4077b97aa..79f64dcff07d 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -259,6 +259,19 @@ static inline int pmdp_clear_flush_young(struct vm_area_struct *vma,
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 #endif
 
+#ifndef arch_has_hw_pte_young
+/*
+ * Return whether the accessed bit is supported on the local CPU.
+ *
+ * This stub assumes accessing through an old PTE triggers a page fault.
+ * Architectures that automatically set the access bit should overwrite it.
+ */
+static inline bool arch_has_hw_pte_young(void)
+{
+	return false;
+}
+#endif
+
 #ifndef __HAVE_ARCH_PTEP_CLEAR
 static inline void ptep_clear(struct mm_struct *mm, unsigned long addr,
 			      pte_t *ptep)
diff --git a/mm/memory.c b/mm/memory.c
index 76e3af9639d9..44a1ec7a2cac 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -122,18 +122,6 @@ int randomize_va_space __read_mostly =
 					2;
 #endif
 
-#ifndef arch_faults_on_old_pte
-static inline bool arch_faults_on_old_pte(void)
-{
-	/*
-	 * Those arches which don't have hw access flag feature need to
-	 * implement their own helper. By default, "true" means pagefault
-	 * will be hit on old pte.
-	 */
-	return true;
-}
-#endif
-
 #ifndef arch_wants_old_prefaulted_pte
 static inline bool arch_wants_old_prefaulted_pte(void)
 {
@@ -2784,7 +2772,7 @@ static inline bool cow_user_page(struct page *dst, struct page *src,
 	 * On architectures with software "accessed" bits, we would
 	 * take a double page fault, so mark it accessed here.
 	 */
-	if (arch_faults_on_old_pte() && !pte_young(vmf->orig_pte)) {
+	if (!arch_has_hw_pte_young() && !pte_young(vmf->orig_pte)) {
 		pte_t entry;
 
 		vmf->pte = pte_offset_map_lock(mm, vmf->pmd, addr, &vmf->ptl);
-- 
2.35.1.1094.g7c7d902a7c-goog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-04-07  3:16 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07  3:15 [PATCH v10 00/14] Multi-Gen LRU Framework Yu Zhao
2022-04-07  3:15 ` Yu Zhao
2022-04-07  3:15 ` Yu Zhao [this message]
2022-04-07  3:15   ` [PATCH v10 01/14] mm: x86, arm64: add arch_has_hw_pte_young() Yu Zhao
2022-04-07  3:15 ` [PATCH v10 02/14] mm: x86: add CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 03/14] mm/vmscan.c: refactor shrink_node() Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-16  6:48   ` Miaohe Lin
2022-04-16  6:48     ` Miaohe Lin
2022-04-07  3:15 ` [PATCH v10 04/14] Revert "include/linux/mm_inline.h: fold __update_lru_size() into its sole caller" Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-16  6:50   ` Miaohe Lin
2022-04-16  6:50     ` Miaohe Lin
2022-04-07  3:15 ` [PATCH v10 05/14] mm: multi-gen LRU: groundwork Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-12  7:06     ` Peter Zijlstra
2022-04-12  7:06       ` Peter Zijlstra
2022-04-20  0:39       ` Yu Zhao
2022-04-20  0:39         ` Yu Zhao
2022-04-20 20:07         ` Linus Torvalds
2022-04-20 20:07           ` Linus Torvalds
2022-04-26 22:39     ` Yu Zhao
2022-04-26 22:39       ` Yu Zhao
2022-04-26 23:42       ` Andrew Morton
2022-04-26 23:42         ` Andrew Morton
2022-04-27  1:18         ` Yu Zhao
2022-04-27  1:18           ` Yu Zhao
2022-04-27  1:34           ` Andrew Morton
2022-04-27  1:34             ` Andrew Morton
2022-04-07  3:15 ` [PATCH v10 06/14] mm: multi-gen LRU: minimal implementation Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-14  6:03   ` Barry Song
2022-04-14  6:03     ` Barry Song
2022-04-14 20:36     ` Yu Zhao
2022-04-14 20:36       ` Yu Zhao
2022-04-14 21:39       ` Andrew Morton
2022-04-14 21:39         ` Andrew Morton
2022-04-14 22:14         ` Yu Zhao
2022-04-14 22:14           ` Yu Zhao
2022-04-15 10:15         ` Barry Song
2022-04-15 10:15           ` Barry Song
2022-04-15 20:17           ` Yu Zhao
2022-04-15 20:17             ` Yu Zhao
2022-04-15 10:26       ` Barry Song
2022-04-15 10:26         ` Barry Song
2022-04-15 20:18         ` Yu Zhao
2022-04-15 20:18           ` Yu Zhao
2022-04-14 11:47   ` Chen Wandun
2022-04-14 11:47     ` Chen Wandun
2022-04-14 20:53     ` Yu Zhao
2022-04-14 20:53       ` Yu Zhao
2022-04-15  2:23       ` Chen Wandun
2022-04-15  2:23         ` Chen Wandun
2022-04-15  5:25         ` Yu Zhao
2022-04-15  5:25           ` Yu Zhao
2022-04-15  6:31           ` Chen Wandun
2022-04-15  6:31             ` Chen Wandun
2022-04-15  6:44             ` Yu Zhao
2022-04-15  6:44               ` Yu Zhao
2022-04-15  9:27               ` Chen Wandun
2022-04-15  9:27                 ` Chen Wandun
2022-04-18  9:58   ` Barry Song
2022-04-18  9:58     ` Barry Song
2022-04-19  0:53     ` Yu Zhao
2022-04-19  0:53       ` Yu Zhao
2022-04-19  4:25       ` Barry Song
2022-04-19  4:25         ` Barry Song
2022-04-19  4:36         ` Barry Song
2022-04-19  4:36           ` Barry Song
2022-04-19 22:25           ` Yu Zhao
2022-04-19 22:25             ` Yu Zhao
2022-04-19 22:20         ` Yu Zhao
2022-04-19 22:20           ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 07/14] mm: multi-gen LRU: exploit locality in rmap Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-27  4:32   ` Aneesh Kumar K.V
2022-04-27  4:32     ` Aneesh Kumar K.V
2022-04-27  4:38     ` Yu Zhao
2022-04-27  4:38       ` Yu Zhao
2022-04-27  5:31       ` Aneesh Kumar K V
2022-04-27  5:31         ` Aneesh Kumar K V
2022-04-27  6:00         ` Yu Zhao
2022-04-27  6:00           ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 08/14] mm: multi-gen LRU: support page table walks Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-12  7:10     ` Peter Zijlstra
2022-04-12  7:10       ` Peter Zijlstra
2022-04-15  5:30       ` Yu Zhao
2022-04-15  5:30         ` Yu Zhao
2022-04-15  1:14     ` Yu Zhao
2022-04-15  1:14       ` Yu Zhao
2022-04-15  1:56       ` Andrew Morton
2022-04-15  1:56         ` Andrew Morton
2022-04-15  6:25         ` Yu Zhao
2022-04-15  6:25           ` Yu Zhao
2022-04-15 19:15           ` Andrew Morton
2022-04-15 19:15             ` Andrew Morton
2022-04-15 20:11             ` Yu Zhao
2022-04-15 20:11               ` Yu Zhao
2022-04-15 21:32               ` Andrew Morton
2022-04-15 21:32                 ` Andrew Morton
2022-04-15 21:36                 ` Linus Torvalds
2022-04-15 21:36                   ` Linus Torvalds
2022-04-15 22:57                   ` Yu Zhao
2022-04-15 22:57                     ` Yu Zhao
2022-04-15 23:03                     ` Linus Torvalds
2022-04-15 23:03                       ` Linus Torvalds
2022-04-15 23:24                       ` [page-reclaim] " Jesse Barnes
2022-04-15 23:24                         ` Jesse Barnes
2022-04-15 23:31                         ` Matthew Wilcox
2022-04-15 23:31                           ` Matthew Wilcox
2022-04-15 23:37                           ` Jesse Barnes
2022-04-15 23:37                             ` Jesse Barnes
2022-04-15 23:49                       ` Yu Zhao
2022-04-15 23:49                         ` Yu Zhao
2022-04-16 16:32                 ` Justin Forbes
2022-04-16 16:32                   ` Justin Forbes
2022-04-19 22:32                   ` Yu Zhao
2022-04-19 22:32                     ` Yu Zhao
2022-04-29 14:10   ` zhong jiang
2022-04-29 14:10     ` zhong jiang
2022-04-30  8:34     ` Yu Zhao
2022-04-30  8:34       ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 09/14] mm: multi-gen LRU: optimize multiple memcgs Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 10/14] mm: multi-gen LRU: kill switch Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-26 20:57     ` Yu Zhao
2022-04-26 20:57       ` Yu Zhao
2022-04-26 22:22       ` Andrew Morton
2022-04-26 22:22         ` Andrew Morton
2022-04-27  1:11         ` Yu Zhao
2022-04-27  1:11           ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 11/14] mm: multi-gen LRU: thrashing prevention Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 12/14] mm: multi-gen LRU: debugfs interface Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-16  0:03     ` Yu Zhao
2022-04-16  0:03       ` Yu Zhao
2022-04-16  4:20       ` Andrew Morton
2022-04-16  4:20         ` Andrew Morton
2022-04-26  6:59         ` Yu Zhao
2022-04-26  6:59           ` Yu Zhao
2022-04-26 21:30           ` Andrew Morton
2022-04-26 21:30             ` Andrew Morton
2022-04-26 22:15             ` Yu Zhao
2022-04-26 22:15               ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 13/14] mm: multi-gen LRU: admin guide Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-07 12:41   ` Bagas Sanjaya
2022-04-07 12:41     ` Bagas Sanjaya
2022-04-07 12:51     ` Jonathan Corbet
2022-04-07 12:51       ` Jonathan Corbet
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-16  2:22     ` Yu Zhao
2022-04-16  2:22       ` Yu Zhao
2022-04-07  3:15 ` [PATCH v10 14/14] mm: multi-gen LRU: design doc Yu Zhao
2022-04-07  3:15   ` Yu Zhao
2022-04-07 11:39   ` Huang Shijie
2022-04-07 11:39     ` Huang Shijie
2022-04-07 12:41   ` Bagas Sanjaya
2022-04-07 12:41     ` Bagas Sanjaya
2022-04-07 12:52     ` Jonathan Corbet
2022-04-07 12:52       ` Jonathan Corbet
2022-04-08  4:48       ` Bagas Sanjaya
2022-04-08  4:48         ` Bagas Sanjaya
2022-04-12  2:16   ` Andrew Morton
2022-04-12  2:16     ` Andrew Morton
2022-04-26  7:42     ` Yu Zhao
2022-04-26  7:42       ` Yu Zhao
2022-04-07  3:24 ` [PATCH v10 00/14] Multi-Gen LRU Framework Yu Zhao
2022-04-07  3:24   ` Yu Zhao
2022-04-07  8:31   ` Stephen Rothwell
2022-04-07  8:31     ` Stephen Rothwell
2022-04-07  9:08     ` Yu Zhao
2022-04-07  9:08       ` Yu Zhao
2022-04-07  9:41     ` Yu Zhao
2022-04-07  9:41       ` Yu Zhao
2022-04-07 12:13       ` Stephen Rothwell
2022-04-07 12:13         ` Stephen Rothwell
2022-04-08  2:08         ` Yu Zhao
2022-04-08  2:08           ` Yu Zhao
2022-04-12  2:15 ` Andrew Morton
2022-04-12  2:15   ` Andrew Morton
2022-04-14  5:06 ` Andrew Morton
2022-04-14  5:06   ` Andrew Morton
2022-04-20  0:50   ` Yu Zhao
2022-04-20  0:50     ` Yu Zhao

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=20220407031525.2368067-2-yuzhao@google.com \
    --to=yuzhao@google.com \
    --cc=21cnbao@gmail.com \
    --cc=Hi-Angel@yandex.ru \
    --cc=Michael@michaellarabel.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=axboe@kernel.dk \
    --cc=baohua@kernel.org \
    --cc=bgeffon@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=d@chaos-reins.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=djbyrne@mtu.edu \
    --cc=hannes@cmpxchg.org \
    --cc=hdanton@sina.com \
    --cc=heftig@archlinux.org \
    --cc=holger@applied-asynchrony.com \
    --cc=jsbarnes@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@kernel.org \
    --cc=oleksandr@natalenko.name \
    --cc=page-reclaim@google.com \
    --cc=riel@surriel.com \
    --cc=rppt@kernel.org \
    --cc=sfr@rothwell.id.au \
    --cc=sofia.trinh@edi.works \
    --cc=steven@liquorix.net \
    --cc=suleiman@google.com \
    --cc=szhai2@cs.rochester.edu \
    --cc=torvalds@linux-foundation.org \
    --cc=vaibhav@linux.ibm.com \
    --cc=vbabka@suse.cz \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=ying.huang@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.