lkml.org 
[lkml]   [2014]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] hugetlb: hugepagesnid=: add 1G huge page support
    Date
    From: Luiz capitulino <lcapitulino@redhat.com>

    Signed-off-by: Luiz capitulino <lcapitulino@redhat.com>
    ---
    mm/hugetlb.c | 26 ++++++++++++++++++++++++++
    1 file changed, 26 insertions(+)

    diff --git a/mm/hugetlb.c b/mm/hugetlb.c
    index 439c3b7..d759321 100644
    --- a/mm/hugetlb.c
    +++ b/mm/hugetlb.c
    @@ -2051,6 +2051,29 @@ void __init hugetlb_add_hstate(unsigned order)
    parsed_hstate = h;
    }

    +static void __init hugetlb_hstate_alloc_pages_nid(struct hstate *h,
    + int nid,
    + unsigned long nr_pages)
    +{
    + struct huge_bootmem_page *m;
    + unsigned long i;
    + void *addr;
    +
    + for (i = 0; i < nr_pages; i++) {
    + addr = memblock_virt_alloc_nid_nopanic(
    + huge_page_size(h), huge_page_size(h),
    + 0, BOOTMEM_ALLOC_ACCESSIBLE, nid);
    + if (!addr)
    + break;
    + m = addr;
    + BUG_ON((unsigned long)virt_to_phys(m) & (huge_page_size(h) - 1));
    + list_add(&m->list, &huge_boot_pages);
    + m->hstate = h;
    + }
    +
    + h->max_huge_pages += i;
    +}
    +
    void __init hugetlb_add_nrpages_nid(unsigned order, unsigned long nid,
    unsigned long nr_pages)
    {
    @@ -2080,6 +2103,9 @@ void __init hugetlb_add_nrpages_nid(unsigned order, unsigned long nid,
    }

    *p = nr_pages;
    +
    + if (h->order >= MAX_ORDER)
    + hugetlb_hstate_alloc_pages_nid(h, nid, nr_pages);
    }

    static int __init hugetlb_nrpages_setup(char *s)
    --
    1.8.1.4


    \
     
     \ /
      Last update: 2014-02-10 19:01    [W:4.140 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site