From: Patrick Wildt <patrick@blueri.se>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC] Reserve ATF memory on Marvell Armdada 3700/7K/8K
Date: Mon, 4 Feb 2019 17:51:00 +0100 [thread overview]
Message-ID: <20190204165100.GA5226@nyx.local> (raw)
In-Reply-To: <f58dbdeb-dd22-737f-1c49-685d4c7527b4@suse.de>
On Fri, Apr 06, 2018 at 12:22:03PM +0200, Alexander Graf wrote:
> On 31.03.18 16:13, Mark Kettenis wrote:
> > Currently U-Boot doesn't make any effort to reserve the memory used by
> > ARM Trusted Firmware on these platforms. The result is that the
> > memory is listed as available in the EFI memory map. And as soon as a
> > loaded kernel tries to use this memory things explode. I've seen this
> > with the OpenBSD kernel. But I totally expect a Linux kernel to
> > suffer the same fate.
> >
> > I'm currently using the diff below, but it is not entirely clear to me
> > if arch_early_init_r() is the appropriate place to do this. I'm also
> > wondering whether the block should also be marked as reserved in the
> > FDT using fdt_add_mem_rsv(). If the latter is required this probably
> > needs to be done by ft_board_setup() or ft_system_setup().
> >
> > The address and size of the region have been taken from Marvell's ATF
> > fork at
> >
> > https://github.com/MarvellEmbeddedProcessors/atf-marvell
> >
> > The memory layout is defined in
> >
> > plat/marvell/a8k/common/include/platform_def.h
> >
> > where there are lots of defines and a diagram that attempt to describe
> > the memory. It is not entirely obvious to me what part needs to be
> > reserved. But 0x0400000-0x04200000 works.
> >
> >
> >
> >
> > diff --git a/arch/arm/mach-mvebu/arm64-common.c b/arch/arm/mach-mvebu/arm64-common.c
> > index 3c84043a2c..895cd2852f 100644
> > --- a/arch/arm/mach-mvebu/arm64-common.c
> > +++ b/arch/arm/mach-mvebu/arm64-common.c
> > @@ -95,5 +95,11 @@ int arch_early_init_r(void)
> > pci_init();
> > #endif
> >
> > +#ifdef CONFIG_EFI_LOADER
> > + /* Reserve trusted SRAM section */
> > + efi_add_memory_map(0x04000000, 0x00200000 >> EFI_PAGE_SHIFT,
> > + EFI_RESERVED_MEMORY_TYPE, false);
>
> I also forgot to comment here. 2MB is probably not enough:
>
>
> https://github.com/MarvellEmbeddedProcessors/atf-marvell/blob/atf-v1.3-armada-17.10/plat/marvell/a8k/common/include/platform_def.h#L110
>
> That sounds more like it should span 65MB (PLAT_MARVELL_TRUSTED_ROM_SIZE
> plus 0x100000).
>
> Looking at what edk2 does, it seems to use the same range as you:
>
>
> https://github.com/MarvellEmbeddedProcessors/edk2-open-platform/blob/marvell-armada-wip/Platforms/Marvell/Armada/Armada.dsc.inc#L347
>
> So let's also CC Marcin :). Maybe his range is too short!
>
>
> Alex
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
The current ATF and EDK2 branch from Marvell seem to reserve a bit more.
I just had the same issue and am using this diff. This then creates the
same map of usable memory as EDK2 does.
Best regards,
Patrick
diff --git a/arch/arm/mach-mvebu/arm64-common.c b/arch/arm/mach-mvebu/arm64-common.c
index 47bbf69944..56c0d3f6b9 100644
--- a/arch/arm/mach-mvebu/arm64-common.c
+++ b/arch/arm/mach-mvebu/arm64-common.c
@@ -14,6 +14,7 @@
#include <asm/arch/cpu.h>
#include <asm/arch/soc.h>
#include <asm/armv8/mmu.h>
+#include <efi_loader.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -142,5 +143,11 @@ int arch_early_init_r(void)
pci_init();
#endif
+#ifdef CONFIG_EFI_LOADER
+ /* Reserve trusted SRAM section */
+ efi_add_memory_map(0x04000000, 0x01400000 >> EFI_PAGE_SHIFT,
+ EFI_RESERVED_MEMORY_TYPE, false);
+#endif
+
return 0;
}
next prev parent reply other threads:[~2019-02-04 16:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-31 14:13 [U-Boot] [RFC] Reserve ATF memory on Marvell Armdada 3700/7K/8K Mark Kettenis
2018-04-03 7:34 ` Matwey V. Kornilov
2018-04-06 10:04 ` Alexander Graf
2018-04-06 10:22 ` Alexander Graf
2019-02-04 16:51 ` Patrick Wildt [this message]
2019-02-12 9:38 ` Alexander Graf
2019-02-12 10:31 ` Marcin Wojtas
2019-06-11 11:00 ` [U-Boot] mvebu: reserve SRAM memory on Marvell Armada 3700/7K/8K Patrick Wildt
2019-06-13 5:48 ` Stefan Roese
2019-06-13 6:09 ` Heinrich Schuchardt
2019-06-13 8:23 ` Mark Kettenis
2019-06-13 9:11 ` Heinrich Schuchardt
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=20190204165100.GA5226@nyx.local \
--to=patrick@blueri.se \
--cc=u-boot@lists.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