]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.12-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 7 Jan 2014 17:47:48 +0000 (09:47 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 7 Jan 2014 17:47:48 +0000 (09:47 -0800)
added patches:
mm-clear-pmd_numa-before-invalidating.patch

queue-3.12/mm-clear-pmd_numa-before-invalidating.patch [new file with mode: 0644]
queue-3.12/series

diff --git a/queue-3.12/mm-clear-pmd_numa-before-invalidating.patch b/queue-3.12/mm-clear-pmd_numa-before-invalidating.patch
new file mode 100644 (file)
index 0000000..e4009d9
--- /dev/null
@@ -0,0 +1,49 @@
+From mgorman@suse.de  Tue Jan  7 09:46:03 2014
+From: Mel Gorman <mgorman@suse.de>
+Date: Tue,  7 Jan 2014 14:00:38 +0000
+Subject: mm: clear pmd_numa before invalidating
+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-4-git-send-email-mgorman@suse.de>
+
+From: Mel Gorman <mgorman@suse.de>
+
+commit 67f87463d3a3362424efcbe8b40e4772fd34fc61 upstream.
+
+On x86, PMD entries are similar to _PAGE_PROTNONE protection and are
+handled as NUMA hinting faults.  The following two page table protection
+bits are what defines them
+
+       _PAGE_NUMA:set  _PAGE_PRESENT:clear
+
+A PMD is considered present if any of the _PAGE_PRESENT, _PAGE_PROTNONE,
+_PAGE_PSE or _PAGE_NUMA bits are set.  If pmdp_invalidate encounters a
+pmd_numa, it clears the present bit leaving _PAGE_NUMA which will be
+considered not present by the CPU but present by pmd_present.  The
+existing caller of pmdp_invalidate should handle it but it's an
+inconsistent state for a PMD.  This patch keeps the state consistent
+when calling pmdp_invalidate.
+
+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/pgtable-generic.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/mm/pgtable-generic.c
++++ b/mm/pgtable-generic.c
+@@ -191,6 +191,9 @@ pgtable_t pgtable_trans_huge_withdraw(st
+ void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+                    pmd_t *pmdp)
+ {
++      pmd_t entry = *pmdp;
++      if (pmd_numa(entry))
++              entry = pmd_mknonnuma(entry);
+       set_pmd_at(vma->vm_mm, address, pmdp, pmd_mknotpresent(*pmdp));
+       flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
+ }
index d7408c6dcf39d4adb430e53d0a13b4ae11b3a747..9734a1cb8fcfb45538ac8b908a1303e2538223a3 100644 (file)
@@ -109,6 +109,7 @@ intel_pstate-fail-initialization-if-p-state-information-is-missing.patch
 revert-of-address-handle-address-cells-2-specially.patch
 mm-numa-serialise-parallel-get_user_page-against-thp-migration.patch
 mm-numa-call-mmu-notifiers-on-thp-migration.patch
+mm-clear-pmd_numa-before-invalidating.patch
 mm-numa-ensure-anon_vma-is-locked-to-prevent-parallel-thp-splits.patch
 mm-numa-avoid-unnecessary-work-on-the-failure-path.patch
 mm-fix-tlb-flush-race-between-migration-and-change_protection_range.patch