Re: [PATCH 10/28] i386: map enough initial memory to create lowmem mappings

Eric W. Biederman
2007-04-23T17:23:40Z

"H. Peter Anvin" <hpa@zytor.com> writes:

> Since we allocate the maximum possible memory statically, I fail to see how
> holes could make the situation any worse, or better.

Consider a memory hole of size 8M immediately after our bootmem bitmap.
head.S which knows nothing of holes will map the pages of the hole
into the initial page tables assuming that is where the page tables
will live.

alloc_bootmem_low_pages which understands holes will skip those pages
and return a higher address, which is outside of our initial mapping
of pages.

As for how to fix this, we need to call boot_ioremap or better
bt_ioremap on the address returned from alloc_bootmem_pages_low to
force the allocated page into the page table. After we have setup
the page table page we can call unmap the page to free up the scarce
early mapping resource.

Eric