On 06/02/2014 11:18 PM, Naoya Horiguchi wrote: > And for patch 8, 9, and 10, I don't think it's good idea to add a new callback > which can handle both pmd and pte (because they are essentially differnt thing). > But the underneath idea of doing pmd_trans_huge_lock() in the common code in > walk_single_entry_locked() looks nice to me. So it would be great if we can do > the same thing in walk_pmd_range() (of linux-mm) to reduce code in callbacks. You think they are different, I think they're the same. :) What the walkers *really* care about is getting a leaf node in the page tables. They generally don't *care* whether it is a pmd or pte, they just want to know what its value is and how large it is. I'd argue that they don't really ever need to actually know at which level they are in the page tables, just if they are at the bottom or not. Note that *NOBODY* sets a pud or pgd entry. That's because the walkers are 100% concerned about leaf nodes (pte's) at this point. Take a look at my version of gather_stats_locked(): > static int gather_stats_locked(pte_t *pte, unsigned long addr, > unsigned long size, struct mm_walk *walk) > { > struct numa_maps *md = walk->private; > struct page *page = can_gather_numa_stats(*pte, walk->vma, addr); > > if (page) > gather_stats(page, md, pte_dirty(*pte), size/PAGE_SIZE); > > return 0; > } The mmotm version looks _very_ similar to that, *BUT* the mmotm version needs to have an entire *EXTRA* 22-line gather_pmd_stats() dealing with THP locking, while mine doesn't. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>