[U-Boot] [RFC 1/1] meson-gx: reserved memory regions

Andreas Färber afaerber at suse.de
Fri Jun 9 16:32:24 UTC 2017


Am 09.06.2017 um 17:43 schrieb Heinrich at suse.de:
> From: Heinrich Schuchardt <xypron.glpk at gmx.de>
> 
> The Odroid C2 has two GiB of memory with two reserved regions.
> reg = <0x0 0x0 0x0 0x1000000>;
> reg = <0x0 0x10000000 0x0 0x200000>;
> 
> The description has been created with the following patches:
> 
> Patch
> bfcef28ae4cf (arm: add initial support for Amlogic Meson and ODROID-C2)
> defined the available memory in arch/arm/dts/meson-gxbb-odroidc2.dts
> as reg = <0x0 0x0 0x0 0x80000000> and the number of RAM banks
> as #define CONFIG_NR_DRAM_BANKS 1.
> 
> Patch
> 4b3ab59d21ef (configs: gxbb: Introduce a common config header file)
> moved the number of RAM banks to include/configs/meson-gxbb-common.h.
> 
> Patch
> a3b02a1d4926 (arm: dts: update Meson GXBB / Odroid-C2 DT with recent)
> defined two reserved memory regions in arch/arm/dts/meson-gx.dtsi.
> 
> U-Boot does not support the concept of reserved memory regions.
> 
> Amongst other mishaps this leads to a wrong memory configuration when
> calling bootefi which may cause a memory violation.

Please share what symptoms you are seeing. I have been using bootefi
with GRUB without problems for many months on Odroid-C2, Vega S95 and
recently NanoPi K2. v4.12-rc3 was probably the last kernel I tested.

> 
> The easiest way to correct this is to define multiple memory banks.
> 
> In the long run fdt support for reserved-memory might be implemented.

Have you looked into that at all? It seems a one-time change that would
benefit all platforms rather than a single board here. I'd imagine a
simple loop over sub-nodes of /reserved-memory that then calls the
existing EFI memory reservation function. (In particular I would hope
that might fix e.g. 32-bit sunxi.)

> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
>  arch/arm/dts/meson-gxbb-odroidc2.dts | 7 ++++++-
>  include/configs/meson-gxbb-common.h  | 2 +-
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/dts/meson-gxbb-odroidc2.dts b/arch/arm/dts/meson-gxbb-odroidc2.dts
> index c737183a29..35b8300e23 100644
> --- a/arch/arm/dts/meson-gxbb-odroidc2.dts
> +++ b/arch/arm/dts/meson-gxbb-odroidc2.dts
> @@ -61,7 +61,12 @@
>  
>  	memory at 0 {
>  		device_type = "memory";
> -		reg = <0x0 0x0 0x0 0x80000000>;
> +		reg =<0x0 0x1000000 0x0 0xf000000>;
> +	};
> +
> +	memory at 1 {

This is wrong. memory at 10200000 if at all.

> +		device_type = "memory";
> +		reg = <0x0 0x10200000 0x0 0x6fe00000>;

Please don't randomly modify the .dts in ways incompatible with Linux.

If we need two DRAM banks, then this needs to be implemented in board or
mach code.

Regards,
Andreas

>  	};
>  
>  	usb_otg_pwr: regulator-usb-pwrs {
> diff --git a/include/configs/meson-gxbb-common.h b/include/configs/meson-gxbb-common.h
> index 89e3807a14..ed55f441a4 100644
> --- a/include/configs/meson-gxbb-common.h
> +++ b/include/configs/meson-gxbb-common.h
> @@ -10,7 +10,7 @@
>  
>  #define CONFIG_CPU_ARMV8
>  #define CONFIG_REMAKE_ELF
> -#define CONFIG_NR_DRAM_BANKS		1
> +#define CONFIG_NR_DRAM_BANKS		2
>  #define CONFIG_ENV_IS_NOWHERE		1
>  #define CONFIG_ENV_SIZE			0x2000
>  #define CONFIG_SYS_MAXARGS		32
> 


-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)


More information about the U-Boot mailing list