lkml.org 
[lkml]   [2014]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 10/19] thp: PMD splitting without splitting compound page
    On Wed, Nov 19, 2014 at 06:57:47AM +0000, Naoya Horiguchi wrote:
    > On Wed, Nov 05, 2014 at 04:49:45PM +0200, Kirill A. Shutemov wrote:
    > > Current split_huge_page() combines two operations: splitting PMDs into
    > > tables of PTEs and splitting underlying compound page. This patch
    > > changes split_huge_pmd() implementation to split the given PMD without
    > > splitting other PMDs this page mapped with or underlying compound page.
    > >
    > > In order to do this we have to get rid of tail page refcounting, which
    > > uses _mapcount of tail pages. Tail page refcounting is needed to be able
    > > to split THP page at any point: we always know which of tail pages is
    > > pinned (i.e. by get_user_pages()) and can distribute page count
    > > correctly.
    > >
    > > We can avoid this by allowing split_huge_page() to fail if the compound
    > > page is pinned. This patch removes all infrastructure for tail page
    > > refcounting and make split_huge_page() to always return -EBUSY. All
    > > split_huge_page() users already know how to handle its fail. Proper
    > > implementation will be added later.
    > >
    > > Without tail page refcounting, implementation of split_huge_pmd() is
    > > pretty straight-forward.
    > >
    > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    > > ---
    > ...
    >
    > > diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
    > > index 7e70ae968e5f..e4ba17694b6b 100644
    > > --- a/arch/powerpc/mm/hugetlbpage.c
    > > +++ b/arch/powerpc/mm/hugetlbpage.c
    > > @@ -1022,7 +1022,6 @@ int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr,
    > > {
    > > unsigned long mask;
    > > unsigned long pte_end;
    > > - struct page *head, *page, *tail;
    > > pte_t pte;
    > > int refs;
    > >
    >
    > This breaks build of powerpc, so you need keep *head and *page as
    > you do for other architectures.

    Yeah. I've already fixed this localy after 0-DAY kernel testing
    complained.

    Thanks.

    --
    Kirill A. Shutemov

    \
     
     \ /
      Last update: 2014-11-19 14:41    [W:4.160 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site