From: Tom Rini <trini@konsulko.com>
To: Marek Vasut <marex@denx.de>
Cc: Jan Kiszka <jan.kiszka@siemens.com>, Wolfgang Denk <wd@denx.de>,
U-Boot Mailing List <u-boot@lists.denx.de>,
Hai Pham <hai.pham.ud@renesas.com>,
Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>,
Stephen Warren <swarren@nvidia.com>,
Lokesh Vutla <lokeshvutla@ti.com>
Subject: Re: [PATCH] Revert "arm: bootm: Disable LMB reservation for command line and board info on arm64"
Date: Sun, 8 Aug 2021 10:54:57 -0400 [thread overview]
Message-ID: <20210808145457.GI858@bill-the-cat> (raw)
In-Reply-To: <03720507-5ea4-0fb9-0549-37df3128be2b@denx.de>
[-- Attachment #1: Type: text/plain, Size: 5765 bytes --]
On Sun, Aug 08, 2021 at 04:28:14PM +0200, Marek Vasut wrote:
> On 8/8/21 4:00 PM, Tom Rini wrote:
> > On Sun, Aug 08, 2021 at 03:45:30PM +0200, Marek Vasut wrote:
> > > On 8/6/21 6:49 PM, Tom Rini wrote:
> > > > On Fri, Aug 06, 2021 at 12:22:43AM +0200, Marek Vasut wrote:
> > > > > On 8/3/21 11:51 PM, Tom Rini wrote:
> > > > > > On Mon, Aug 02, 2021 at 05:27:59PM -0400, Tom Rini wrote:
> > > > > > > On Thu, Jul 29, 2021 at 09:22:02AM +0200, Jan Kiszka wrote:
> > > > > > >
> > > > > > > > From: Jan Kiszka <jan.kiszka@siemens.com>
> > > > > > > >
> > > > > > > > This reverts commit 2359fa7a87848626bcbd3399e92c657595880cd7.
> > > > > > > >
> > > > > > > > While the goal is valid and there is surely unused memory in that area,
> > > > > > > > we also have a lot of crucial things still located at the top-of-memory
> > > > > > > > while running lmb_alloc_base. Such things are the page table (tlb_addr),
> > > > > > > > relocated U-Boot and the active stack. Possibly more. So this patch was
> > > > > > > > premature, we will need relocations of those things first if we want to
> > > > > > > > use the range.
> > > > > > > >
> > > > > > > > Fixes booting on the IOT2050, but likely also on other boards. It got
> > > > > > > > stuck on relocating the FDT - over the relocated U-Boot code.
> > > > > > > >
> > > > > > > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> > > > > > > > ---
> > > > > > > >
> > > > > > > > Practically,
> > > > > > > >
> > > > > > > > void arch_lmb_reserve(struct lmb *lmb)
> > > > > > > > {
> > > > > > > > lmb_reserve(lmb, gd->relocaddr, gd->ram_top - gd->relocaddr);
> > > > > > > > }
> > > > > > > >
> > > > > > > > worked as well for me - but it left the stack in danger.
> > > > > > >
> > > > > > > I want to cycle back up to this practically part. Marek, would changing
> > > > > > > the arch_lmb_reserve (or possibly even making this a more global thing /
> > > > > > > option) still let the area you want exposed on rcar3 (I assume) be
> > > > > > > exposed ? Or would it be covered again? Part of the problem,
> > > > > > > practically speaking, is that we need to ensure that as part of
> > > > > > > (attempting and likely succeeding in) booting the OS we don't overwrite
> > > > > > > ourself and hang.
> > > > >
> > > > > I think large part of the problem is the purpose of LMB is unclear at best.
> > > > >
> > > > > The arch_lmb_reserve() says this:
> > > > >
> > > > > 54 void arch_lmb_reserve(struct lmb *lmb)
> > > > > [...]
> > > > > 59 /*
> > > > > 60 * Booting a (Linux) kernel image
> > > > > 61 *
> > > > > 62 * Allocate space for command line and board info - the
> > > > > 63 * address should be as high as possible within the reach of
> > > > > 64 * the kernel (see CONFIG_SYS_BOOTMAPSZ settings), but in unused
> > > > > 65 * memory, which means far enough below the current stack
> > > > > 66 * pointer.
> > > > > 67 */
> > > > >
> > > > > So basically reserve chunk of memory in the right place, which can be safely
> > > > > passed to the kernel.
> > > >
> > > > No. This isn't the case. We reserve chunks of memory away from other
> > > > usage by U-Boot.
> > >
> > > Then I have to wonder, why is this not called in board_init_f or
> > > board_init_r , but only after bootm or similar boot command was called ?
> >
> > I also wonder a little bit. That it does not is why we have the LMB
> > checks under fs/ and net/ and doing this sooner would possibly make
> > dealing with those CVEs either easier or would also address some other
> > classes of them that may exist.
>
> So, why not move it into the relocation code then ?
A further potential clean-up, yes. I don't think that was discussed
around CVE-2018-18439 / CVE-2018-18440.
> > I expect it was not simply because up
> > until rather recently we didn't have any checks for "don't overwrite
> > specific areas of memory" other than right before firing off the OS (and
> > modify whatever memory you want to modify is a feature not a bug).
>
> The LMB has been around since forever though ?
Yes, LMB has been around since the PowerPC device tree days I suspect (I
didn't dig that far back), but only used outside of the "don't overwrite
the running U-Boot while we relocate device tree / initrd before booting
OS" since 2018 or so.
> [...]
>
> > > > OK, so then there isn't a problem reverting this commit for rcar?
> > >
> > > The revert will break the use case where the other CPUs are using memory
> > > above U-Boot, but have a look at the following branch, it should permit me
> > > to parametrize the arch_lmb_reserve() better and reserve the right memory
> > > areas per architecture/mach/board, and even clean the arch_lmb_reserve up
> > > further:
> > > https://source.denx.de/u-boot/custodians/u-boot-sh/-/tree/lmb-v1
> > > So yes, pick the revert and I'll submit the four patches for likely next
> > > release.
> >
> > Thanks for explaining, I'll pick up the revert patch then.
> >
> > For your LMB tree, I like the initial approach but looking at
> > 528915c71762 ("imx: Fix potential lmb memory overwritten by stack") I
> > think that shows the general "4K is enough for stack we hope" is wrong,
> > and we should do 16K instead for everyone as the default. But we can
> > discuss that more too once you post the whole series which again, I
> > think is the right direction.
>
> The IMX thing is odd indeed and raises a bigger question -- what is the
> "right" amount of stack to reserve ?
It's a good question, yes. And some more details about what exactly the
NXP folks were doing to hit that would also be nice.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2021-08-08 14:55 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-29 7:22 [PATCH] Revert "arm: bootm: Disable LMB reservation for command line and board info on arm64" Jan Kiszka
2021-07-29 15:01 ` Marek Vasut
2021-07-29 15:23 ` Tom Rini
2021-07-29 16:47 ` Marek Vasut
2021-07-29 16:58 ` Tom Rini
2021-08-02 0:54 ` Marek Vasut
2021-08-02 9:37 ` Jan Kiszka
2021-08-02 10:48 ` Marek Vasut
2021-08-02 11:36 ` Jan Kiszka
2021-08-02 11:38 ` Marek Vasut
2021-08-02 11:54 ` Jan Kiszka
2021-08-02 13:04 ` Tom Rini
2021-08-02 14:03 ` Jan Kiszka
2021-08-02 14:27 ` Tom Rini
2021-08-02 14:34 ` Jan Kiszka
2021-08-02 14:44 ` Tom Rini
2021-08-05 21:52 ` Marek Vasut
2021-08-06 16:43 ` Tom Rini
2021-08-02 13:00 ` Tom Rini
2021-08-05 21:53 ` Marek Vasut
2021-08-05 23:31 ` Tom Rini
2021-08-08 13:35 ` Marek Vasut
2021-08-02 21:27 ` Tom Rini
2021-08-03 21:51 ` Tom Rini
2021-08-05 22:22 ` Marek Vasut
2021-08-06 16:49 ` Tom Rini
2021-08-08 13:45 ` Marek Vasut
2021-08-08 14:00 ` Tom Rini
2021-08-08 14:28 ` Marek Vasut
2021-08-08 14:54 ` Tom Rini [this message]
2021-08-08 15:25 ` Marek Vasut
2021-08-08 15:57 ` Tom Rini
2021-08-09 7:34 ` [EXT] " Ye Li
2021-08-09 13:16 ` Tom Rini
2021-08-09 14:11 ` Wolfgang Denk
2021-08-09 14:21 ` Tom Rini
2021-08-09 6:44 ` Wolfgang Denk
2021-08-09 12:53 ` Tom Rini
2021-08-08 18:21 ` Tom Rini
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=20210808145457.GI858@bill-the-cat \
--to=trini@konsulko.com \
--cc=hai.pham.ud@renesas.com \
--cc=jan.kiszka@siemens.com \
--cc=lokeshvutla@ti.com \
--cc=marex@denx.de \
--cc=simon.k.r.goldschmidt@gmail.com \
--cc=swarren@nvidia.com \
--cc=u-boot@lists.denx.de \
--cc=wd@denx.de \
/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