Re: kexec reboot code buffer

From: Eric W. Biederman (ebiederm@xmission.com)
Date: Tue Jan 28 2003 - 02:24:54 EST


"Martin J. Bligh" <mbligh@aracnet.com> writes:

> >> The problem is that I have not figured out how to tell the memory
> >> allocator just what I need,
> > <snip>
> >> I guess I would make the standard zones something like:
> >> /*
> >> * ZONE_DMA < 16 MB ISA DMA capable memory
> >> * ZONE_NORMAL 16-896 MB direct mapped by the kernel
> >> * ZONE_PHYSMEM 896-4096 MB memory that is accessible with the
> >> MMU disabled.
> >> * ZONE_HIGHMEM > 4096MB only page cache and user processes
> >> */
> >
> > I think this might be overkill. ZONE_NORMAL gives you what you want,
> > and I don't think it's worth it to introduce a new one just for the
> > relatively short timespan where you have the new kernel loaded, but
> > haven't actually shut down. I think a little comment next to the
> > allocation explaining this will be more than enough.
> >
> > Martin, any ideas?
>
> We talked about creating a new zone specifically for DMA32 (ie <4Gb)
> for other reasons, but it's not there as yet.

Right. And because of that I don't feel bad about asking for a zone
that ends at 4GB, as it is a fairly general need in the kernel, even
if the rest of the interfaces have a little catching up to do before
the can use it. Although with IOMMUs I don't know how much such a
DMA32 zone is worth.

> As Dave mentioned,
> ZONE_NORMAL should be sufficient, though if you need it physically
> contiguous, that might be a problem.

I am fine with memory that is not physically contiguous. The memory
I really want the kernel is currently sitting on.....

> How much memory do you need? If it's only 2Mb or so, why don't we
> statically reserve it at boot time and keep it set aside?

The largest I have heard of is currently is 96MB. Typical is
somewhere between 900K and 6MB. You get some interesting
kernel+ramdisk combinations when people are network booting a diskless
system. Theoretically I can accommodate a nearly 4GB image, with the
current code structure.

So the 4GB instead of 960MB limit, and not pesimizing the kernel for
the cases where the new image sits in ram for a while (kexec on panic)
is while I modified my code to use high memory.

The nasty case comes with highmemory when I am allocating memory on a
32GB NUMA box and am allocating memory on the wrong node. In which
case my code needs to allocate 28GB before it starts getting the
memory it wants.

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



This archive was generated by hypermail 2b29 : Fri Jan 31 2003 - 22:00:18 EST