[U-Boot] [RFC] Reserve ATF memory on Marvell Armdada 3700/7K/8K

Alexander Graf agraf at suse.de
Fri Apr 6 10:04:07 UTC 2018



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.

Please make sure to CC people you think would be interested. In this
case, I believe Stefan certainly would care. Me too :).

> 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.

Yeah, so ATF resides in RAM and U-Boot obviously needs to propagate that
information.

I actually think for mvebu it might make sense to completely override
efi_add_known_memory(). If I read all the bdinfo logic correctly,
they're going through great lengths to reduce the amount of address
space they propagate in bi_dram:


https://github.com/u-boot/u-boot/blob/master/arch/arm/mach-mvebu/dram.c#L274

That of course means our memory map is completely bogus. So instead,
what I would do is create an override for efi_add_known_memory() where
you just walk the dram slots yourself and add all memory you find as
BOOTTIME_DATA. That way the OS will know that it can use it for itself,
but it won't be used during boot time.

Then, go through bi_dram and force all those regions as free memory.

And at last, reserve the ATF range as reserved. And yes, you want to do
that in both - EFI map and as FDT fixup.


Alex


More information about the U-Boot mailing list