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

Eric W. Biederman
2007-04-23T17:33:35Z

Jeremy Fitzhardinge <jeremy@goop.org> writes:

> H. Peter Anvin wrote:
>> Since we allocate the maximum possible memory statically, I fail to
>> see how holes could make the situation any worse, or better.
>
> No, we map enough space to map 4G (~4 pages), but we don't actually map
> 4G. If a hole happened to start within that 4 page mapping, then the
> memory still wouldn't be available for allocation.
>
> I think this is a bit of a spurious argument though, since if it were
> really a problem we'd have to worry about holes hitting the kernel image
> too. As far as I can see, that's not considered to be a problem.

- holes hitting the kernel image is not something we can do anything about.

- I have always believed we need to export enough information so the
bootloader can verify that we don't hit a hole in the initial
kernel image.

- I know of one system that had BIOS tables at 16MB I believe (and
thus had a fairly low hole).

- Given that we are actually increasing (not decreasing) the number of
scenarios where we boot the kernel it probably makes sense to be
as robust as we can.

- If we support putting the ramdisk immediately after the kernel image
in memory we will actually hit this case in practice.

> I think the real point is that there's currently a subtle dependency
> between head.S and bootmem allocation which happens between start_kernel
> and pagetable_init. Your patch preventing over-mapping should make them
> easier to smoke out as it currently stands, but eliminating the problem
> by making alloc_bootmem create the mappings for itself does have
> appeal. There would still be the dependency on head.S to map the kernel
> itself and the bootmem allocator bitmap.

Agreed. However that is essentially all statically allocated memory
and the best we can do at this point in time.

Eric