lkml.org 
[lkml]   [2016]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/28] mm, page_alloc: Only check PageCompound for high-order pages
    Date
    order-0 pages by definition cannot be compound so avoid the check in the
    fast path for those pages.

    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    ---
    mm/page_alloc.c | 25 +++++++++++++++++--------
    1 file changed, 17 insertions(+), 8 deletions(-)

    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index 59de90d5d3a3..5d205bcfe10d 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -1024,24 +1024,33 @@ void __meminit reserve_bootmem_region(unsigned long start, unsigned long end)

    static bool free_pages_prepare(struct page *page, unsigned int order)
    {
    - bool compound = PageCompound(page);
    - int i, bad = 0;
    + int bad = 0;

    VM_BUG_ON_PAGE(PageTail(page), page);
    - VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);

    trace_mm_page_free(page, order);
    kmemcheck_free_shadow(page, order);
    kasan_free_pages(page, order);

    + /*
    + * Check tail pages before head page information is cleared to
    + * avoid checking PageCompound for order-0 pages.
    + */
    + if (order) {
    + bool compound = PageCompound(page);
    + int i;
    +
    + VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);
    +
    + for (i = 1; i < (1 << order); i++) {
    + if (compound)
    + bad += free_tail_pages_check(page, page + i);
    + bad += free_pages_check(page + i);
    + }
    + }
    if (PageAnon(page))
    page->mapping = NULL;
    bad += free_pages_check(page);
    - for (i = 1; i < (1 << order); i++) {
    - if (compound)
    - bad += free_tail_pages_check(page, page + i);
    - bad += free_pages_check(page + i);
    - }
    if (bad)
    return false;

    --
    2.6.4
    \
     
     \ /
      Last update: 2016-04-15 11:21    [W:6.421 / U:0.680 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site