linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: Disable movable allocation for TRANSHUGE pages
@ 2018-09-25  7:25 Ashish Mhetre
  2018-09-25 11:51 ` Kirill A. Shutemov
  0 siblings, 1 reply; 5+ messages in thread
From: Ashish Mhetre @ 2018-09-25  7:25 UTC (permalink / raw)
  To: linux-mm, akpm; +Cc: amhetre, vdumpa, Snikam

TRANSHUGE pages have no migration support. Using CMA memory
for TRANSHUGE pages makes the memory reclaim not possible.
If TRANSHUGE pages are allocated as movable then the
allocations can come from CMA memory and make CMA reclaim fail.
To avoid this, disable movable page allocations for TRANSHUGE
pages.

Signed-off-by: Ashish Mhetre <amhetre@nvidia.com>
---
 mm/huge_memory.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 63edf18..bef509d 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -631,19 +631,26 @@ static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf,
  */
 static inline gfp_t alloc_hugepage_direct_gfpmask(struct vm_area_struct *vma)
 {
+	gfp_t gfp = GFP_TRANSHUGE_LIGHT;
 	const bool vma_madvised = !!(vma->vm_flags & VM_HUGEPAGE);
 
-	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags))
-		return GFP_TRANSHUGE | (vma_madvised ? 0 : __GFP_NORETRY);
-	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, &transparent_hugepage_flags))
-		return GFP_TRANSHUGE_LIGHT | __GFP_KSWAPD_RECLAIM;
-	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, &transparent_hugepage_flags))
-		return GFP_TRANSHUGE_LIGHT | (vma_madvised ? __GFP_DIRECT_RECLAIM :
-							     __GFP_KSWAPD_RECLAIM);
-	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, &transparent_hugepage_flags))
-		return GFP_TRANSHUGE_LIGHT | (vma_madvised ? __GFP_DIRECT_RECLAIM :
-							     0);
-	return GFP_TRANSHUGE_LIGHT;
+	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG,
+				&transparent_hugepage_flags))
+		gfp = GFP_TRANSHUGE | (vma_madvised ? 0 : __GFP_NORETRY);
+	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG,
+				&transparent_hugepage_flags))
+		gfp = GFP_TRANSHUGE_LIGHT | __GFP_KSWAPD_RECLAIM;
+	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG,
+					&transparent_hugepage_flags))
+		gfp = GFP_TRANSHUGE_LIGHT | (vma_madvised ?
+			__GFP_DIRECT_RECLAIM : __GFP_KSWAPD_RECLAIM);
+	if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG,
+					&transparent_hugepage_flags))
+		gfp = GFP_TRANSHUGE_LIGHT | (vma_madvised ?
+					__GFP_DIRECT_RECLAIM : 0);
+	gfp &= ~__GFP_MOVABLE;
+
+	return gfp;
 }
 
 /* Caller must hold page table lock. */
-- 
2.1.4


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-09-25 21:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-25  7:25 [PATCH] mm: Disable movable allocation for TRANSHUGE pages Ashish Mhetre
2018-09-25 11:51 ` Kirill A. Shutemov
2018-09-25 18:30   ` Michal Hocko
2018-09-25 21:00     ` Kirill A. Shutemov
2018-09-25 21:11       ` Michal Hocko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox