From: Robert Millan <rmh@aybabtu.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: memory management issue (Re: another regression on Efika)
Date: Tue, 24 Jul 2007 21:59:46 +0200 [thread overview]
Message-ID: <20070724195946.GA3336@aragorn> (raw)
In-Reply-To: <20070713220829.GA20231@aragorn>
[-- Attachment #1: Type: text/plain, Size: 2160 bytes --]
On Sat, Jul 14, 2007 at 12:08:30AM +0200, Robert Millan wrote:
> On Tue, Jul 10, 2007 at 03:32:30PM -0500, Hollis Blanchard wrote:
> > > > In short, whatever is causing these crashes is not only an Efika issue.
> > > > I suspect Apple, or Apple powerbooks at least, are also affected. I got
> > > > Sjoerd to try this on his powerbook, and he confirms this fixes for him.
> > > > Paul also tried, with the same results. Not all the powerbooks are the
> > > > very same model, there are different model revisions involved.
> > >
> > > The error Jordi was seeing before reverting your commits was very similar to
> > > what I get on my Efika (something like "claim failed").
> > >
> > > Hollis, do you still think this is a firmware bug?
> >
> > Could somebody please debug it and report back if it is really a GRUB
> > issue? It could be as simple as adjusting the link address, or it could
> > mean instrumenting grub_available_iterate() and checking that output
> > with the contents of /memory/available.
>
> It turns out that grub_claim_heap() was asked to claim a region that starts
> after the heap limit. The start address (0x19111e4) is correctly obtained
> from /memory/available.
>
> Should heap limit be increased?
The attached patch fixes the problem for Efika, although I'm not 1:1 sure of
its correctness.
It seems to me that heaplimit is meant to be used as a relative offset, not
as an absolute memory address. This makes the current code fail when the
start address in /memory/available is higher than heaplimit, and I don't
think there's anything that can grant us this won't happen. From this POV,
it's clear that moving from relative to absolute address is wrong.
OTOH, your commit indicates (as per variable names, etc) that this change
was done intentionally; so I have to assume there would be a reason for that.
Please can you clarify?
Btw, the attached patch doesn't fix the problem for Jordi (Mac). Maybe
we're talking about two separate bugs after all.
--
Robert Millan
My spam trap is honeypot@aybabtu.com. Note: this address is only intended
for spam harvesters. Writing to it will get you added to my black list.
[-- Attachment #2: memory_fix.diff --]
[-- Type: text/x-diff, Size: 1072 bytes --]
Index: kern/powerpc/ieee1275/init.c
===================================================================
RCS file: /sources/grub/grub2/kern/powerpc/ieee1275/init.c,v
retrieving revision 1.31
diff -u -r1.31 init.c
--- kern/powerpc/ieee1275/init.c 21 Jul 2007 23:32:27 -0000 1.31
+++ kern/powerpc/ieee1275/init.c 23 Jul 2007 19:49:44 -0000
@@ -115,14 +115,16 @@
/* Claim some available memory in the first /memory node. */
static void grub_claim_heap (unsigned long heaplimit)
{
+ unsigned long total = 0;
+
auto int heap_init (grub_uint64_t addr, grub_uint64_t len);
int heap_init (grub_uint64_t addr, grub_uint64_t len)
{
len -= 1; /* Required for some firmware. */
/* Don't claim anything above `heaplimit'. */
- if (addr + len > heaplimit)
- len = heaplimit - addr;
+ if (total + len > heaplimit)
+ len = heaplimit - total;
if (len)
{
@@ -134,6 +136,10 @@
grub_mm_init_region ((void *) (grub_addr_t) addr, len);
}
+ total += len;
+ if (total >= heaplimit)
+ return 1;
+
return 0;
}
next prev parent reply other threads:[~2007-07-24 19:57 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-02 18:16 another regression on Efika Robert Millan
2007-07-02 21:14 ` Robert Millan
2007-07-04 16:18 ` Hollis Blanchard
2007-07-10 10:04 ` Jordi Mallach
2007-07-10 14:08 ` memory management issue (Re: another regression on Efika) Robert Millan
2007-07-10 20:32 ` Hollis Blanchard
2007-07-13 22:08 ` Robert Millan
2007-07-24 19:59 ` Robert Millan [this message]
2007-07-25 17:51 ` Hollis Blanchard
2007-07-25 20:08 ` Robert Millan
2007-07-25 23:25 ` Hollis Blanchard
2007-07-27 8:05 ` Robert Millan
[not found] ` <20070727103310.GA1539@powerlinux.fr>
2007-07-27 19:15 ` Robert Millan
2007-07-29 19:30 ` Robert Millan
2007-07-30 20:11 ` [PATCH] efika memory issues Robert Millan
2007-07-30 22:35 ` Hollis Blanchard
2007-07-31 14:38 ` Robert Millan
2007-07-31 15:55 ` Hollis Blanchard
2007-07-31 19:42 ` Robert Millan
2007-08-01 17:34 ` Hollis Blanchard
2007-08-01 18:27 ` Robert Millan
2007-09-30 20:10 ` [PATCH] fix memory management on efika/pegasos Robert Millan
2007-10-01 18:18 ` Marcin Kurek
2007-10-01 22:25 ` Marcin Kurek
2007-10-02 19:42 ` Robert Millan
2007-10-03 23:38 ` Marcin Kurek
2007-10-04 20:47 ` Robert Millan
2007-07-10 14:10 ` OF disk naming scheme (Re: another regression on Efika) Robert Millan
2007-07-10 19:26 ` Jordi Mallach
2007-07-13 22:16 ` Robert Millan
2007-07-22 9:33 ` Robert Millan
2007-07-22 14:37 ` Marco Gerards
2007-07-22 20:25 ` Robert Millan
2007-08-12 14:56 ` proposed solution using "ofpathname -a" (Re: OF disk naming scheme) Robert Millan
2007-08-05 10:03 ` updated regression diff (Re: another regression on Efika) Robert Millan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070724195946.GA3336@aragorn \
--to=rmh@aybabtu.com \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.