From: Greg Kroah-Hartman Date: Tue, 7 Jan 2014 18:53:51 +0000 (-0800) Subject: 3.12-stable patches X-Git-Tag: v3.4.76~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2190c53175407a94197d475e7139835a057d914c;p=thirdparty%2Fkernel%2Fstable-queue.git 3.12-stable patches added patches: mm-numa-defer-tlb-flush-for-thp-migration-as-long-as-possible.patch --- diff --git a/queue-3.12/mm-numa-defer-tlb-flush-for-thp-migration-as-long-as-possible.patch b/queue-3.12/mm-numa-defer-tlb-flush-for-thp-migration-as-long-as-possible.patch new file mode 100644 index 00000000000..92fea8f5c2e --- /dev/null +++ b/queue-3.12/mm-numa-defer-tlb-flush-for-thp-migration-as-long-as-possible.patch @@ -0,0 +1,54 @@ +From mgorman@suse.de Tue Jan 7 10:51:22 2014 +From: Mel Gorman +Date: Tue, 7 Jan 2014 14:00:48 +0000 +Subject: mm: numa: defer TLB flush for THP migration as long as possible +To: gregkh@linuxfoundation.org +Cc: athorlton@sgi.com, riel@redhat.com, chegu_vinod@hp.com, Mel Gorman , stable@vger.kernel.org +Message-ID: <1389103248-17617-14-git-send-email-mgorman@suse.de> + +From: Mel Gorman + +commit b0943d61b8fa420180f92f64ef67662b4f6cc493 upstream. + +THP migration can fail for a variety of reasons. Avoid flushing the TLB +to deal with THP migration races until the copy is ready to start. + +Signed-off-by: Mel Gorman +Reviewed-by: Rik van Riel +Cc: Alex Thorlton +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +--- + mm/huge_memory.c | 7 ------- + mm/migrate.c | 3 +++ + 2 files changed, 3 insertions(+), 7 deletions(-) + +--- a/mm/huge_memory.c ++++ b/mm/huge_memory.c +@@ -1360,13 +1360,6 @@ int do_huge_pmd_numa_page(struct mm_stru + } + + /* +- * The page_table_lock above provides a memory barrier +- * with change_protection_range. +- */ +- if (mm_tlb_flush_pending(mm)) +- flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE); +- +- /* + * Migrate the THP to the requested node, returns with page unlocked + * and pmd_numa cleared. + */ +--- a/mm/migrate.c ++++ b/mm/migrate.c +@@ -1705,6 +1705,9 @@ int migrate_misplaced_transhuge_page(str + goto out_fail; + } + ++ if (mm_tlb_flush_pending(mm)) ++ flush_tlb_range(vma, mmun_start, mmun_end); ++ + /* Prepare a page as a migration target */ + __set_page_locked(new_page); + SetPageSwapBacked(new_page); diff --git a/queue-3.12/mm-numa-guarantee-that-tlb_flush_pending-updates-are-visible-before-page-table-updates.patch b/queue-3.12/mm-numa-guarantee-that-tlb_flush_pending-updates-are-visible-before-page-table-updates.patch index 01cc24cfff0..1415e32e0c6 100644 --- a/queue-3.12/mm-numa-guarantee-that-tlb_flush_pending-updates-are-visible-before-page-table-updates.patch +++ b/queue-3.12/mm-numa-guarantee-that-tlb_flush_pending-updates-are-visible-before-page-table-updates.patch @@ -21,6 +21,7 @@ Acked-by: Paul E. McKenney Reviewed-by: Rik van Riel Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman --- include/linux/mm_types.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/queue-3.12/series b/queue-3.12/series index 7e6a1a7663a..6544e97a943 100644 --- a/queue-3.12/series +++ b/queue-3.12/series @@ -118,6 +118,7 @@ mm-numa-clear-numa-hinting-information-on-mprotect.patch mm-numa-avoid-unnecessary-disruption-of-numa-hinting-during-migration.patch mm-fix-tlb-flush-race-between-migration-and-change_protection_range.patch mm-numa-guarantee-that-tlb_flush_pending-updates-are-visible-before-page-table-updates.patch +mm-numa-defer-tlb-flush-for-thp-migration-as-long-as-possible.patch mm-mempolicy-correct-putback-method-for-isolate-pages-if-failed.patch mm-compaction-respect-ignore_skip_hint-in-update_pageblock_skip.patch mm-memory-failure.c-recheck-pagehuge-after-hugetlb-page-migrate-successfully.patch