lkml.org 
[lkml]   [2012]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 20/52] mm, numa: Implement migrate-on-fault lazy NUMA strategy for regular and THP pages
    Commit "mm, numa: Implement migrate-on-fault lazy NUMA strategy for 
    regular and THP pages" breaks the build because HPAGE_PMD_SHIFT and
    HPAGE_PMD_MASK defined to explode without CONFIG_TRANSPARENT_HUGEPAGE:

    mm/migrate.c: In function 'migrate_misplaced_transhuge_page_put':
    mm/migrate.c:1549: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed
    mm/migrate.c:1564: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed
    mm/migrate.c:1566: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed
    mm/migrate.c:1573: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed
    mm/migrate.c:1606: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed
    mm/migrate.c:1648: error: call to '__build_bug_failed' declared with attribute error: BUILD_BUG failed

    CONFIG_NUMA_BALANCING allows compilation without enabling transparent
    hugepages, so define the dummy function for such a configuration and only
    define migrate_misplaced_transhuge_page_put() when transparent hugepages
    are enabled.

    Signed-off-by: David Rientjes <rientjes@google.com>
    ---
    include/linux/migrate.h | 18 +++++++++++-------
    mm/migrate.c | 3 +++
    2 files changed, 14 insertions(+), 7 deletions(-)

    diff --git a/include/linux/migrate.h b/include/linux/migrate.h
    --- a/include/linux/migrate.h
    +++ b/include/linux/migrate.h
    @@ -78,12 +78,6 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping,
    #ifdef CONFIG_NUMA_BALANCING
    extern bool migrate_balanced_pgdat(struct pglist_data *pgdat, int nr_migrate_pages);
    extern int migrate_misplaced_page_put(struct page *page, int node);
    -extern int migrate_misplaced_transhuge_page_put(struct mm_struct *mm,
    - struct vm_area_struct *vma,
    - pmd_t *pmd, pmd_t entry,
    - unsigned long address,
    - struct page *page, int node);
    -
    #else
    static inline bool migrate_balanced_pgdat(struct pglist_data *pgdat, int nr_migrate_pages)
    {
    @@ -93,6 +87,16 @@ static inline int migrate_misplaced_page_put(struct page *page, int node)
    {
    return -EAGAIN; /* can't migrate now */
    }
    +#endif /* CONFIG_NUMA_BALANCING */
    +
    +#if defined(CONFIG_NUMA_BALANCING) && defined(CONFIG_TRANSPARENT_HUGEPAGE)
    +extern int migrate_misplaced_transhuge_page_put(struct mm_struct *mm,
    + struct vm_area_struct *vma,
    + pmd_t *pmd, pmd_t entry,
    + unsigned long address,
    + struct page *page, int node);
    +
    +#else
    static inline int migrate_misplaced_transhuge_page_put(struct mm_struct *mm,
    struct vm_area_struct *vma,
    pmd_t *pmd, pmd_t entry,
    @@ -101,6 +105,6 @@ static inline int migrate_misplaced_transhuge_page_put(struct mm_struct *mm,
    {
    return -EAGAIN;
    }
    -#endif /* CONFIG_NUMA_BALANCING */
    +#endif /* CONFIG_NUMA_BALANCING && CONFIG_TRANSPARENT_HUGEPAGE */

    #endif /* _LINUX_MIGRATE_H */
    diff --git a/mm/migrate.c b/mm/migrate.c
    --- a/mm/migrate.c
    +++ b/mm/migrate.c
    @@ -1540,6 +1540,7 @@ out:
    return isolated;
    }

    +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
    int migrate_misplaced_transhuge_page_put(struct mm_struct *mm,
    struct vm_area_struct *vma,
    pmd_t *pmd, pmd_t entry,
    @@ -1653,6 +1654,8 @@ out_dropref:
    out_keep_locked:
    return 0;
    }
    +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
    +
    #endif /* CONFIG_NUMA_BALANCING */

    #endif /* CONFIG_NUMA */

    \
     
     \ /
      Last update: 2012-12-05 02:41    [W:4.844 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site