linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [patch] hugetlb: correct page offset index for sharing pmd
@ 2012-08-03 12:56 Hillf Danton
  2012-08-03 13:32 ` Michal Hocko
  0 siblings, 1 reply; 25+ messages in thread
From: Hillf Danton @ 2012-08-03 12:56 UTC (permalink / raw)
  To: Michal Hocko; +Cc: Mel Gorman, Andrew Morton, Linux-MM, LKML, Hillf Danton

The computation of page offset index is open coded, and incorrect, to
be used in scanning prio tree, as huge page offset is required, and is
fixed with the well defined routine.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
---

--- a/arch/x86/mm/hugetlbpage.c	Fri Aug  3 20:34:58 2012
+++ b/arch/x86/mm/hugetlbpage.c	Fri Aug  3 20:40:16 2012
@@ -72,12 +72,15 @@ static void huge_pmd_share(struct mm_str
 	if (!vma_shareable(vma, addr))
 		return;

+	idx = linear_page_index(vma, addr);
+
 	mutex_lock(&mapping->i_mmap_mutex);
 	vma_prio_tree_foreach(svma, &iter, &mapping->i_mmap, idx, idx) {
 		if (svma == vma)
 			continue;

-		saddr = page_table_shareable(svma, vma, addr, idx);
+		saddr = page_table_shareable(svma, vma, addr,
+						idx * (PMD_SIZE/PAGE_SIZE));
 		if (saddr) {
 			spte = huge_pte_offset(svma->vm_mm, saddr);
 			if (spte) {
--

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 25+ messages in thread
* [PATCH] hugetlb: do not use vma_hugecache_offset for vma_prio_tree_foreach
@ 2012-08-13 13:55 Michal Hocko
  2012-08-16 12:45 ` Hillf Danton
  2012-09-26 20:56 ` Johannes Weiner
  0 siblings, 2 replies; 25+ messages in thread
From: Michal Hocko @ 2012-08-13 13:55 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, Hillf Danton, Mel Gorman,
	KAMEZAWA Hiroyuki, Andrea Arcangeli, David Rientjes

0c176d5 (mm: hugetlb: fix pgoff computation when unmapping page
from vma) fixed pgoff calculation but it has replaced it by
vma_hugecache_offset which is not approapriate for offsets used for
vma_prio_tree_foreach because that one expects index in page units
rather than in huge_page_shift.
Using vma_hugecache_offset is not incorrect because the pgoff will fit
into the same vmas but it is confusing so the standard PAGE_SHIFT based
index calculation is used instead.

Cc: Hillf Danton <dhillf@gmail.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Michal Hocko <mhocko@suse.cz>
---
 mm/hugetlb.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index c39e4be..a74ea31 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -2462,7 +2462,8 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * from page cache lookup which is in HPAGE_SIZE units.
 	 */
 	address = address & huge_page_mask(h);
-	pgoff = vma_hugecache_offset(h, vma, address);
+	pgoff = ((address - vma->vm_start) >> PAGE_SHIFT) +
+			vma->vm_pgoff;
 	mapping = vma->vm_file->f_dentry->d_inode->i_mapping;
 
 	/*
-- 
1.7.10.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2012-10-01 18:29 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-03 12:56 [patch] hugetlb: correct page offset index for sharing pmd Hillf Danton
2012-08-03 13:32 ` Michal Hocko
2012-08-10  9:48   ` Michal Hocko
2012-08-10 12:07     ` Hillf Danton
2012-08-10 12:27       ` Michal Hocko
2012-08-10 12:37         ` Hillf Danton
2012-08-10 12:51           ` Michal Hocko
2012-08-10 12:53             ` Hillf Danton
2012-08-10 13:16               ` Michal Hocko
2012-08-10 13:21                 ` Hillf Danton
2012-08-10 13:39                   ` Hillf Danton
2012-08-10 13:48                   ` Michal Hocko
2012-08-12  4:08                     ` Hillf Danton
2012-08-12  9:31                       ` Michal Hocko
2012-08-13 12:10                         ` Hillf Danton
2012-08-13 13:09                           ` Michal Hocko
2012-08-13 13:24                             ` [PATCH] hugetlb: do not use vma_hugecache_offset for vma_prio_tree_foreach Hillf Danton
2012-08-13 13:49                               ` Michal Hocko
2012-08-13 13:51                                 ` Hillf Danton
2012-08-13 13:55 Michal Hocko
2012-08-16 12:45 ` Hillf Danton
2012-08-16 15:11   ` Michal Hocko
2012-09-26 20:56 ` Johannes Weiner
2012-10-01 16:22   ` Michal Hocko
2012-10-01 18:29     ` Johannes Weiner

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