From: Hollis Blanchard <hollisb@us.ibm.com>
To: Milton Miller <miltonm@bga.com>
Cc: linux-ppc <linuxppc-dev@ozlabs.org>, Wolfgang Denk <wd@denx.de>,
Ilya Yanok <yanok@emcraft.com>
Subject: Re: [PATCH] [v3] powerpc/4xx: work around CHIP11 errata in a more PAGE_SIZE-friendly way
Date: Tue, 25 Nov 2008 15:17:30 -0600 [thread overview]
Message-ID: <1227647850.7434.31.camel@localhost.localdomain> (raw)
In-Reply-To: <e46a947625709d642a08e101e70b1e24@bga.com>
On Tue, 2008-11-25 at 11:10 -0600, Milton Miller wrote:
> On Nov 24, 2008, at 6:10 PM, Michael Ellerman wrote:
> > On Mon, 2008-11-24 at 14:07 -0600, Hollis Blanchard wrote:
> >> On Fri, 2008-11-14 at 16:09 -0600, Hollis Blanchard wrote:
> >>>
> >>> If this is all too much, then I'm close to giving up and burning a
> >>> 64KB page, which requires only ALIGN_DOWN() in the kernel.
> >>
> >> ppc: force memory size to be a multiple of PAGE_SIZE
> >>
> >> Ensure that total memory size is page-aligned, because otherwise
> >> bootmem.c gets upset.
> >>
> >> This error case was triggered by using 64 KiB pages in the kernel
> >> while
> >> arch/powerpc/boot/4xx.c arbitrarily reduced the amount of memory by
> >> 4096 (to
> >> work around the "CHIP11" errata which affects the last 256 bytes of
> >> physical memory).
> >>
> >> Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
> >> ---
> >> This is on a common code path, and lmb_enforce_memory_limit() will now
> >> always take action, so wider testing would be good.
> >>
> >> This patch supercedes http://patchwork.ozlabs.org/patch/8211/ .
> >>
> >> diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
> >> --- a/arch/powerpc/kernel/prom.c
> >> +++ b/arch/powerpc/kernel/prom.c
> >> @@ -1200,6 +1200,11 @@ void __init early_init_devtree(void *par
> >> early_reserve_mem();
> >> phyp_dump_reserve_mem();
> >>
> >> + /* Ensure that total memory size is page-aligned, because otherwise
> >> + * bootmem.c gets upset. */
> >> + lmb_analyze();
> >> + memory_limit = lmb_phys_mem_size() & PAGE_MASK;
> >
> > All of the current code using memory_limit looks like it'll be safe
> > with
> > this change, although there are several cases of this we could remove:
> >
> > if (memory_limit && <some other condition>)
> >
> > Because memory_limit will now always be true.
>
> memory_limit was the result of parsing mem= from the command line.
> Does this break that?
If you're asking me, no, the patch doesn't break that. early_parse_mem()
already aligns memory_limit, so the additional mask does nothing.
> > Still, I think it would be better to only set memory_limit when the mem
> > size is not a multiple of the PAGE_SIZE - so that memory_limit retains
> > it's function as both the value of the limit and a boolean.
>
> I would have expected this trimming to occur where we actually transfer
> the memory from lmb to bootmem, since it is bootmem that has the
> aligned size requirement.
No good; since LMB knows the memory exists, it allocates space for the
unflattened device tree in the last page, and then uses
reserve_bootmem() for that space and again, bootmem BUG()s.
Anyways, the LMB interface is wide, with lots of users directly
accessing LMB data structures. There are enough permutations of highmem,
crashdump kernels, et al that I don't feel comfortable trying to audit
and test all the LMB users.
--
Hollis Blanchard
IBM Linux Technology Center
next prev parent reply other threads:[~2008-11-25 21:17 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-14 17:25 [PATCH] [v3] powerpc/4xx: work around CHIP11 errata in a more PAGE_SIZE-friendly way Milton Miller
2008-11-14 17:29 ` Milton Miller
2008-11-14 22:09 ` Hollis Blanchard
2008-11-18 20:33 ` Hollis Blanchard
2008-11-24 20:07 ` Hollis Blanchard
2008-11-25 0:10 ` Michael Ellerman
2008-11-25 17:10 ` Milton Miller
2008-11-25 21:17 ` Hollis Blanchard [this message]
2008-11-25 21:53 ` Hollis Blanchard
2008-11-25 23:43 ` Michael Ellerman
-- strict thread matches above, loose matches on Subject: below --
2008-11-12 0:06 Hollis Blanchard
2008-11-12 0:09 ` David Gibson
2008-11-12 4:37 ` Benjamin Herrenschmidt
2008-11-12 11:31 ` Josh Boyer
2008-11-12 11:52 ` Benjamin Herrenschmidt
2008-11-12 15:11 ` Hollis Blanchard
2008-11-12 20:44 ` Benjamin Herrenschmidt
2008-11-12 20:53 ` Josh Boyer
2008-11-13 19:54 ` Hollis Blanchard
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=1227647850.7434.31.camel@localhost.localdomain \
--to=hollisb@us.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=miltonm@bga.com \
--cc=wd@denx.de \
--cc=yanok@emcraft.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).