Re: [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region

From: Tony Luck
Date: Fri May 22 2015 - 16:32:05 EST


On Tue, Apr 28, 2015 at 7:37 AM, Mel Gorman <mgorman@xxxxxxx> wrote:
> Currently each page struct is set as reserved upon initialization.
> This patch leaves the reserved bit clear and only sets the reserved bit
> when it is known the memory was allocated by the bootmem allocator. This
> makes it easier to distinguish between uninitialised struct pages and
> reserved struct pages in later patches.

On ia64 my linux-next builds now report a bunch of messages like this:

put_kernel_page: page at 0xe000000005588000 not in reserved memory
put_kernel_page: page at 0xe000000005588000 not in reserved memory
put_kernel_page: page at 0xe000000005580000 not in reserved memory
put_kernel_page: page at 0xe000000005580000 not in reserved memory
put_kernel_page: page at 0xe000000005580000 not in reserved memory
put_kernel_page: page at 0xe000000005580000 not in reserved memory

the two different pages match up with two objects from the loaded kernel
that get mapped by arch/ia64/mm/init.c:setup_gate()

a000000101588000 D __start_gate_section
a000000101580000 D empty_zero_page

Should I look for a place to set the reserved bit on page structures for these
addresses? Or just remove the test and message in put_kernel_page()
[I added a debug "else" clause here - every caller passes in a page that is
not reserved]

if (!PageReserved(page))
printk(KERN_ERR "put_kernel_page: page at 0x%p not in
reserved memory\n",
page_address(page));

-Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/