Generic Linux architectural discussions
 help / color / mirror / Atom feed
diff for duplicates of <20161222145203.GA18970@bbox>

diff --git a/a/1.txt b/N1/1.txt
index 5a886f8..6953e72 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -28,63 +28,3 @@ On Thu, Dec 22, 2016 at 11:17:13AM +0300, Kirill A. Shutemov wrote:
 > From what I see change to huge_pmd_set_accessed() should be enough.
 
 Yeb. Thanks for the review. Here v2 goes.
-
-From b3ec95c0df91ad113525968a4a6b53030fd0b48d Mon Sep 17 00:00:00 2001
-From: Minchan Kim <minchan@kernel.org>
-Date: Thu, 22 Dec 2016 23:43:49 +0900
-Subject: [PATCH v2] mm: pmd dirty emulation in page fault handler
-
-Andreas reported [1] made a test in jemalloc hang in THP mode in arm64.
-http://lkml.kernel.org/r/mvmmvfy37g1.fsf@hawking.suse.de
-
-The problem is page fault handler supports only accessed flag emulation
-for THP page of SW-dirty/accessed architecture.
-
-This patch enables dirty-bit emulation for those architectures.
-Without it, MADV_FREE makes application hang by repeated fault forever.
-
-[1] b8d3c4c3009d, mm/huge_memory.c: don't split THP page when MADV_FREE syscall is called
-
-Cc: Jason Evans <je@fb.com>
-Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
-Cc: Will Deacon <will.deacon@arm.com>
-Cc: Catalin Marinas <catalin.marinas@arm.com>
-Cc: linux-arch@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org
-Cc: <stable@vger.kernel.org> [4.5+]
-Fixes: b8d3c4c3009d ("mm/huge_memory.c: don't split THP page when MADV_FREE syscall is called")
-Reported-by: Andreas Schwab <schwab@suse.de>
-Signed-off-by: Minchan Kim <minchan@kernel.org>
----
-* from v1
-  * Remove __handle_mm_fault part - Kirill
-
- mm/huge_memory.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index 10eedbf..29ec8a4 100644
---- a/mm/huge_memory.c
-+++ b/mm/huge_memory.c
-@@ -883,15 +883,17 @@ void huge_pmd_set_accessed(struct vm_fault *vmf, pmd_t orig_pmd)
- {
- 	pmd_t entry;
- 	unsigned long haddr;
-+	bool write = vmf->flags & FAULT_FLAG_WRITE;
- 
- 	vmf->ptl = pmd_lock(vmf->vma->vm_mm, vmf->pmd);
- 	if (unlikely(!pmd_same(*vmf->pmd, orig_pmd)))
- 		goto unlock;
- 
- 	entry = pmd_mkyoung(orig_pmd);
-+	if (write)
-+		entry = pmd_mkdirty(entry);
- 	haddr = vmf->address & HPAGE_PMD_MASK;
--	if (pmdp_set_access_flags(vmf->vma, haddr, vmf->pmd, entry,
--				vmf->flags & FAULT_FLAG_WRITE))
-+	if (pmdp_set_access_flags(vmf->vma, haddr, vmf->pmd, entry, write))
- 		update_mmu_cache_pmd(vmf->vma, vmf->address, vmf->pmd);
- 
- unlock:
--- 
-2.7.4
diff --git a/a/content_digest b/N1/content_digest
index b6dc7b1..981ab74 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -45,66 +45,6 @@
  "> __handle_mm_fault() at all.\n"
  "> From what I see change to huge_pmd_set_accessed() should be enough.\n"
  "\n"
- "Yeb. Thanks for the review. Here v2 goes.\n"
- "\n"
- "From b3ec95c0df91ad113525968a4a6b53030fd0b48d Mon Sep 17 00:00:00 2001\n"
- "From: Minchan Kim <minchan@kernel.org>\n"
- "Date: Thu, 22 Dec 2016 23:43:49 +0900\n"
- "Subject: [PATCH v2] mm: pmd dirty emulation in page fault handler\n"
- "\n"
- "Andreas reported [1] made a test in jemalloc hang in THP mode in arm64.\n"
- "http://lkml.kernel.org/r/mvmmvfy37g1.fsf@hawking.suse.de\n"
- "\n"
- "The problem is page fault handler supports only accessed flag emulation\n"
- "for THP page of SW-dirty/accessed architecture.\n"
- "\n"
- "This patch enables dirty-bit emulation for those architectures.\n"
- "Without it, MADV_FREE makes application hang by repeated fault forever.\n"
- "\n"
- "[1] b8d3c4c3009d, mm/huge_memory.c: don't split THP page when MADV_FREE syscall is called\n"
- "\n"
- "Cc: Jason Evans <je@fb.com>\n"
- "Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>\n"
- "Cc: Will Deacon <will.deacon@arm.com>\n"
- "Cc: Catalin Marinas <catalin.marinas@arm.com>\n"
- "Cc: linux-arch@vger.kernel.org\n"
- "Cc: linux-arm-kernel@lists.infradead.org\n"
- "Cc: <stable@vger.kernel.org> [4.5+]\n"
- "Fixes: b8d3c4c3009d (\"mm/huge_memory.c: don't split THP page when MADV_FREE syscall is called\")\n"
- "Reported-by: Andreas Schwab <schwab@suse.de>\n"
- "Signed-off-by: Minchan Kim <minchan@kernel.org>\n"
- "---\n"
- "* from v1\n"
- "  * Remove __handle_mm_fault part - Kirill\n"
- "\n"
- " mm/huge_memory.c | 6 ++++--\n"
- " 1 file changed, 4 insertions(+), 2 deletions(-)\n"
- "\n"
- "diff --git a/mm/huge_memory.c b/mm/huge_memory.c\n"
- "index 10eedbf..29ec8a4 100644\n"
- "--- a/mm/huge_memory.c\n"
- "+++ b/mm/huge_memory.c\n"
- "@@ -883,15 +883,17 @@ void huge_pmd_set_accessed(struct vm_fault *vmf, pmd_t orig_pmd)\n"
- " {\n"
- " \tpmd_t entry;\n"
- " \tunsigned long haddr;\n"
- "+\tbool write = vmf->flags & FAULT_FLAG_WRITE;\n"
- " \n"
- " \tvmf->ptl = pmd_lock(vmf->vma->vm_mm, vmf->pmd);\n"
- " \tif (unlikely(!pmd_same(*vmf->pmd, orig_pmd)))\n"
- " \t\tgoto unlock;\n"
- " \n"
- " \tentry = pmd_mkyoung(orig_pmd);\n"
- "+\tif (write)\n"
- "+\t\tentry = pmd_mkdirty(entry);\n"
- " \thaddr = vmf->address & HPAGE_PMD_MASK;\n"
- "-\tif (pmdp_set_access_flags(vmf->vma, haddr, vmf->pmd, entry,\n"
- "-\t\t\t\tvmf->flags & FAULT_FLAG_WRITE))\n"
- "+\tif (pmdp_set_access_flags(vmf->vma, haddr, vmf->pmd, entry, write))\n"
- " \t\tupdate_mmu_cache_pmd(vmf->vma, vmf->address, vmf->pmd);\n"
- " \n"
- " unlock:\n"
- "-- \n"
- 2.7.4
+ Yeb. Thanks for the review. Here v2 goes.
 
-bb8c26c2446478d4288136887001e56ee751b1dc6a6f16e37836d4dc999f0287
+9403b766ba224c3f8e1beb20d2daf7644957e6d6a6fceff7d8ab04df687637d1

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