Re: [RFC 1/1] bootmem: move big allocations behing 4G

Jiri Slaby
2010-01-19T22:02:51Z

On 01/19/2010 03:33 PM, Johannes Weiner wrote:
> On Mon, Jan 18, 2010 at 11:56:30PM +0100, Jiri Slaby wrote:
>> Hi, I'm fighting a bug where Grub loads the kernel just fine, whereas
>> isolinux doesn't. I found out, it's due to different addresses of
>> loaded initrd. On a machine with 128G of memory, grub loads the
>> initrd at 895M in our case and flat mem_map (2G long) is allocated
>> above 4G due to 2-4G BIOS reservation.
>>
>> On the other hand, with isolinux, the 0-2G is free and mem_map is
>> placed there leaving no space for others, hence kernel panics for
>> swiotlb which needs to be below 4G.
>
> Bootmem already protects the lower 16MB DMA zone for the obvious reasons,
> how about shifting the default bootmem goal above the DMA32 zone if it exists?

Hi, I think it makes sense.

> I tested the below on a rather dull x86_64 machine and it seems to work. Would
> this work in your case as well? The goal for mem_map should now be above 4G.

It seems that it will. I'll give it a try later (it needs to be set up)
and report back.

> From 1c11ce1e82c6209f0eda72e3340ab0c55cd6f330 Mon Sep 17 00:00:00 2001
> From: Johannes Weiner <jw@emlix.com>
> Date: Tue, 19 Jan 2010 14:14:44 +0100
> Subject: [patch] bootmem: avoid DMA32 zone, if any, by default
>
> x86_64 and mips define a DMA32 zone additionally to the old DMA
> zone of 16MB. Bootmem already avoids the old DMA zone if the
> allocation site did not request otherwise.
>
> But since DMA32 is also a limited resource, avoid using it as well
> by default, if defined.
>
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>

So for the time being:
Reviewed-by: Jiri Slaby <jirislaby@gmail.com>

thanks,
--
js