On Thu, Jun 11, 2015 at 02:30:15PM +0200, Vlastimil Babka wrote: > On 06/03/2015 07:06 PM, Kirill A. Shutemov wrote: > >The patch updates Documentation/vm/transhuge.txt to reflect changes in > >THP design. > > One thing I'm missing is info about the deferred splitting. Okay, I'll add this. > >Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > >--- > > Documentation/vm/transhuge.txt | 124 +++++++++++++++++++++++------------------ > > 1 file changed, 69 insertions(+), 55 deletions(-) > > > >diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt > >index 6b31cfbe2a9a..2352b12cae93 100644 > >--- a/Documentation/vm/transhuge.txt > >+++ b/Documentation/vm/transhuge.txt > >@@ -35,10 +35,10 @@ miss is going to run faster. > > > > == Design == > > > >-- "graceful fallback": mm components which don't have transparent > >- hugepage knowledge fall back to breaking a transparent hugepage and > >- working on the regular pages and their respective regular pmd/pte > >- mappings > >+- "graceful fallback": mm components which don't have transparent hugepage > >+ knowledge fall back to breaking huge pmd mapping into table of ptes and, > >+ if nesessary, split a transparent hugepage. Therefore these components > > necessary > >+ > >+split_huge_page uses migration entries to stabilize page->_count and > >+page->_mapcount. > > Hm, what if there's some physical memory scanner taking page->_count pins? I > think compaction shouldn't be an issue, but maybe some others? The only legitimate way scanner can get reference to a page is get_page_unless_zero(), right? All tail pages has zero ->_count until atomic_add() in __split_huge_page_tail() -- get_page_unless_zero() will fail. After the atomic_add() we don't care about ->_count value. We already known how many references with should uncharge from head page. For head page get_page_unless_zero() will succeed and we don't mind. It's clear where reference should go after split: it will stay on head page. -- Kirill A. Shutemov -- 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>