grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: memory management issue (Re: another regression on Efika)


From: Hollis Blanchard
Subject: Re: memory management issue (Re: another regression on Efika)
Date: Wed, 25 Jul 2007 18:25:24 -0500

On 7/25/07, Robert Millan <address@hidden> wrote:
On Wed, Jul 25, 2007 at 12:51:27PM -0500, Hollis Blanchard wrote:
>
> I was indeed trying to make it absolute. GRUB is linked at 0x10000, or
> 64KB. Add in all the modules and you still are only using a couple
> hundred KB.

But if GRUB is linked at 0x10000, how come the firmware loads it since
that's below the 0x19111e4 limit?  (or am I missing some physical vs logical
issue here?)

No, you are correct; obviously firmware is doing something wrong. The
question is can we accommodate it, and if so, how?

> I don't remember *why* I was trying to make it absolute; I'm sure it
> was to fix a problem (rather than I was bored). If we could get away
> from this anachronistic Changelog crap, the commit message would have
> told us exactly what we need to know.

I pasted the ChangeLog entries in an earlier mail.  Do you mean the CVS commit
message might have more information?

I mean if this were any other project I participate in, I would have
explicitly spelled out why the commit was done.

> I *think* it was because we have a relocation problem with OSes that
> are linked at 4MB, which is the case with Xen (and I believe yaboot).
> If GRUB is using that memory, we simply can't load anything there.
>
> I think we can add some somewhat-special-case logic that says if there
> is nothing available below HEAP_LIMIT, claim something beginning as
> low as we can. That reduces functionality on such platforms (as
> described above), but there's little we can do about that unless
> firmware is fixed.

So the purpose of HEAP_LIMIT is to support code that is linked at fixed
addresses?

Yes. This includes yaboot, Xen, and Linux zImages. I think zImages
relocate themselves no matter where they were loaded though.

> My big question is this: why is Efika firmware saying that 0x19111e4
> (around 25MB) is the first available address?

What is wrong with that?  Is it general practice that all firmwares load
at low addresses so that non-relocatable code can be linked at 4MB or such?

Not at all. IBM pSeries firmwares load at a default of 12MB, and I've
seen others that load at the top of RAM to stay out of the way.

It's clear that Efika firmware isn't *really* using all memory below
25MB; we know this because we managed to load grub there. This
undoubtedly an Efika firmware bug, but as I described earlier I think
we can devise another workaround for it without hurting the common
case.

-Hollis




reply via email to

[Prev in Thread] Current Thread [Next in Thread]