lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v14 055/138] mm: Add arch_make_folio_accessible()
    Date
    As a default implementation, call arch_make_page_accessible n times.
    If an architecture can do better, it can override this.

    Also move the default implementation of arch_make_page_accessible()
    from gfp.h to mm.h.

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    include/linux/gfp.h | 6 ------
    include/linux/mm.h | 21 +++++++++++++++++++++
    2 files changed, 21 insertions(+), 6 deletions(-)

    diff --git a/include/linux/gfp.h b/include/linux/gfp.h
    index 55b2ec1f965a..dc5ff40608ce 100644
    --- a/include/linux/gfp.h
    +++ b/include/linux/gfp.h
    @@ -520,12 +520,6 @@ static inline void arch_free_page(struct page *page, int order) { }
    #ifndef HAVE_ARCH_ALLOC_PAGE
    static inline void arch_alloc_page(struct page *page, int order) { }
    #endif
    -#ifndef HAVE_ARCH_MAKE_PAGE_ACCESSIBLE
    -static inline int arch_make_page_accessible(struct page *page)
    -{
    - return 0;
    -}
    -#endif

    struct page *__alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid,
    nodemask_t *nodemask);
    diff --git a/include/linux/mm.h b/include/linux/mm.h
    index 89daae93aa9b..deb0f5efaa65 100644
    --- a/include/linux/mm.h
    +++ b/include/linux/mm.h
    @@ -1732,6 +1732,27 @@ static inline size_t folio_size(struct folio *folio)
    return PAGE_SIZE << folio_order(folio);
    }

    +#ifndef HAVE_ARCH_MAKE_PAGE_ACCESSIBLE
    +static inline int arch_make_page_accessible(struct page *page)
    +{
    + return 0;
    +}
    +#endif
    +
    +#ifndef HAVE_ARCH_MAKE_FOLIO_ACCESSIBLE
    +static inline int arch_make_folio_accessible(struct folio *folio)
    +{
    + int ret, i;
    + for (i = 0; i < folio_nr_pages(folio); i++) {
    + ret = arch_make_page_accessible(folio_page(folio, i));
    + if (ret)
    + break;
    + }
    +
    + return ret;
    +}
    +#endif
    +
    /*
    * Some inline functions in vmstat.h depend on page_zone()
    */
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-07-15 06:24    [W:4.096 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site