lkml.org 
[lkml]   [2022]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 5/5] mm/hugetlb: add folio_hstate()
    Date
    Helper function to retrieve hstate information from a hugetlb folio.

    Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    ---
    include/linux/hugetlb.h | 14 ++++++++++++--
    mm/migrate.c | 2 +-
    2 files changed, 13 insertions(+), 3 deletions(-)

    diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
    index f92b9e6c8f9e..b4473bc43806 100644
    --- a/include/linux/hugetlb.h
    +++ b/include/linux/hugetlb.h
    @@ -858,10 +858,15 @@ static inline pte_t arch_make_huge_pte(pte_t entry, unsigned int shift,
    }
    #endif

    +static inline struct hstate *folio_hstate(struct folio *folio)
    +{
    + VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio);
    + return size_to_hstate(folio_size(folio));
    +}
    +
    static inline struct hstate *page_hstate(struct page *page)
    {
    - VM_BUG_ON_PAGE(!PageHuge(page), page);
    - return size_to_hstate(page_size(page));
    + return folio_hstate(page_folio(page));
    }

    static inline unsigned hstate_index_to_shift(unsigned index)
    @@ -1070,6 +1075,11 @@ static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
    return NULL;
    }

    +static inline struct hstate *folio_hstate(struct folio *folio)
    +{
    + return NULL;
    +}
    +
    static inline struct hstate *page_hstate(struct page *page)
    {
    return NULL;
    diff --git a/mm/migrate.c b/mm/migrate.c
    index c228afba0963..17b92af421b9 100644
    --- a/mm/migrate.c
    +++ b/mm/migrate.c
    @@ -1607,7 +1607,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
    nid = folio_nid(folio);

    if (folio_test_hugetlb(folio)) {
    - struct hstate *h = page_hstate(&folio->page);
    + struct hstate *h = folio_hstate(folio);

    gfp_mask = htlb_modify_alloc_mask(h, gfp_mask);
    return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);
    --
    2.31.1
    \
     
     \ /
      Last update: 2022-09-22 17:44    [W:2.488 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site