Thread (22 messages) 22 messages, 6 authors, 2012-10-30

Re: [PATCH] s390: Add pmd_mknotpresent()

From: Ingo Molnar <mingo@kernel.org>
Date: 2012-10-30 07:26:07
Also in: lkml

* Gerald Schaefer [off-list ref] wrote:
quoted hunk ↗ jump to hunk
On Sun, 28 Oct 2012 14:10:14 +0100
Ingo Molnar [off-list ref] wrote:
quoted
There's a related problem on s390: other THP implementations 
have pmd_mknotpresent() while s390 not, resulting in:

  mm/huge_memory.c:1543:2: error: implicit declaration of function 'pmd_mknotpresent'

The (untested!) patch below adds the s390 version of this 
method.

Gerald, Martin, did I get the S390 details right?
The upstream thp patches for s390 fixed that by adding pmdp_invalidate() and
replacing the pmd_mknotpresent() in mm/huge_memory.c, see git commit 46dcde73.
The pmdp_invalidate() is already included linux-next, so it should be ok to
just change mm/huge_memory.c similar to upstream:
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index f1c2679..842b6df 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1537,8 +1537,7 @@ static int __split_huge_page_map(struct page *page,
 	 * complete. The ptl also protects against concurrent faults due to
 	 * making the pmd not-present.
 	 */
-	set_pmd_at(mm, address, pmd, pmd_mknotpresent(*pmd));
-	flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
+	pmdp_invalidate(vma, address, pmd);
 	pmd_populate(mm, pmd, pgtable);
 	ret = 1;
With this, s390 does not need a pmd_mknotpresent(), and using 
set_pmd_at(..., pmd_mknotpresent()) would be wrong on s390 
anyway because we need a flushing operation to change a valid 
pmd.
Ok, great - so to me it seems that once the two trees are merged 
there's no extra change needed for s390 - so I dropped the 
patch.

Thanks,

	Ingo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help