Re: [PATCH 2/5] hugetlb: add phys addr to struct huge_bootmem_page
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2011-06-28 21:40:50
Also in:
lkml
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2011-06-28 21:40:50
Also in:
lkml
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 __initgather_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.