--- /dev/null
+From mgorman@suse.de Tue Jan 7 10:51:22 2014
+From: Mel Gorman <mgorman@suse.de>
+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 <mgorman@suse.de>, stable@vger.kernel.org
+Message-ID: <1389103248-17617-14-git-send-email-mgorman@suse.de>
+
+From: Mel Gorman <mgorman@suse.de>
+
+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 <mgorman@suse.de>
+Reviewed-by: Rik van Riel <riel@redhat.com>
+Cc: Alex Thorlton <athorlton@sgi.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
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