lkml.org 
[lkml]   [2008]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] [17/18] Add huge pud support to mm/memory.c
    Date

    mm/memory.c seems to have already gained some knowledge about huge pages:
    in particularly in get_user_pages. Fix that code up to support huge
    puds.

    Signed-off-by: Andi Kleen <ak@suse.de>

    ---
    mm/memory.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)
    Index: linux/mm/memory.c
    ===================================================================
    --- linux.orig/mm/memory.c
    +++ linux/mm/memory.c
    @@ -931,7 +931,13 @@ struct page *follow_page(struct vm_area_
    pud = pud_offset(pgd, address);
    if (pud_none(*pud) || unlikely(pud_bad(*pud)))
    goto no_page_table;
    -
    +
    + if (pud_huge(*pud)) {
    + BUG_ON(flags & FOLL_GET);
    + page = follow_huge_pud(mm, address, pud, flags & FOLL_WRITE);
    + goto out;
    + }
    +
    pmd = pmd_offset(pud, address);
    if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
    goto no_page_table;
    @@ -1422,6 +1428,8 @@ static int apply_to_pmd_range(struct mm_
    unsigned long next;
    int err;

    + BUG_ON(pud_huge(*pud));
    +
    pmd = pmd_alloc(mm, pud, addr);
    if (!pmd)
    return -ENOMEM;

    \
     
     \ /
      Last update: 2008-03-17 03:07    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean