[PATCH 2/5] hugetlb: add phys addr to struct huge_bootmem_page
Benjamin Herrenschmidt
benh at kernel.crashing.org
Wed Jun 29 07:39:26 EST 2011
On Tue, 2011-06-28 at 14:54 -0500, Becky Bruce wrote:
> struct page *alloc_huge_page_node(struct hstate *h, int nid);
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 6402458..2db81ea 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -1105,8 +1105,14 @@ static void __init
> gather_bootmem_prealloc(void)
> struct huge_bootmem_page *m;
>
> list_for_each_entry(m, &huge_boot_pages, list) {
> - struct page *page = virt_to_page(m);
> struct hstate *h = m->hstate;
> +#ifdef CONFIG_HIGHMEM
> + struct page *page = pfn_to_page(m->phys >>
> PAGE_SHIFT);
> + free_bootmem_late((unsigned long)m,
> + sizeof(struct huge_bootmem_page));
> +#else
> + struct page *page = virt_to_page(m);
> +#endif
> __ClearPageReserved(page);
Why do you add free_bootmem_late() in the highmem case and not the
normal case ?
Cheers,
Ben.
More information about the Linuxppc-dev
mailing list