All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] hugetlb: correct page offset index for sharing pmd
@ 2012-08-03 12:56 ` Hillf Danton
  0 siblings, 0 replies; 50+ 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) {
--

^ permalink raw reply	[flat|nested] 50+ messages in thread
* [PATCH] hugetlb: do not use vma_hugecache_offset for vma_prio_tree_foreach
@ 2012-08-13 13:55 ` Michal Hocko
  0 siblings, 0 replies; 50+ 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


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

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

Thread overview: 50+ 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 12:56 ` Hillf Danton
2012-08-03 13:32 ` Michal Hocko
2012-08-03 13:32   ` Michal Hocko
2012-08-10  9:48   ` Michal Hocko
2012-08-10  9:48     ` Michal Hocko
2012-08-10 12:07     ` Hillf Danton
2012-08-10 12:07       ` Hillf Danton
2012-08-10 12:27       ` Michal Hocko
2012-08-10 12:27         ` Michal Hocko
2012-08-10 12:37         ` Hillf Danton
2012-08-10 12:37           ` Hillf Danton
2012-08-10 12:51           ` Michal Hocko
2012-08-10 12:51             ` Michal Hocko
2012-08-10 12:53             ` Hillf Danton
2012-08-10 12:53               ` Hillf Danton
2012-08-10 13:16               ` Michal Hocko
2012-08-10 13:16                 ` Michal Hocko
2012-08-10 13:21                 ` Hillf Danton
2012-08-10 13:21                   ` Hillf Danton
2012-08-10 13:39                   ` Hillf Danton
2012-08-10 13:39                     ` Hillf Danton
2012-08-10 13:48                   ` Michal Hocko
2012-08-10 13:48                     ` Michal Hocko
2012-08-12  4:08                     ` Hillf Danton
2012-08-12  4:08                       ` Hillf Danton
2012-08-12  9:31                       ` Michal Hocko
2012-08-12  9:31                         ` Michal Hocko
2012-08-13 12:10                         ` Hillf Danton
2012-08-13 12:10                           ` Hillf Danton
2012-08-13 13:09                           ` Michal Hocko
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:24                               ` Hillf Danton
2012-08-13 13:49                               ` Michal Hocko
2012-08-13 13:49                                 ` Michal Hocko
2012-08-13 13:51                                 ` Hillf Danton
2012-08-13 13:51                                   ` Hillf Danton
2012-08-13 13:55 Michal Hocko
2012-08-13 13:55 ` Michal Hocko
2012-08-16 12:45 ` Hillf Danton
2012-08-16 12:45   ` Hillf Danton
2012-08-16 15:11   ` Michal Hocko
2012-08-16 15:11     ` Michal Hocko
2012-09-26 20:56 ` Johannes Weiner
2012-09-26 20:56   ` Johannes Weiner
2012-10-01 16:22   ` Michal Hocko
2012-10-01 16:22     ` Michal Hocko
2012-10-01 18:29     ` Johannes Weiner
2012-10-01 18:29       ` Johannes Weiner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.