[PATCH linux dev-4.7 2/2] ARM: dts: aspeed: Reserve memory on all P9 machines
Suraj Jitindar Singh
sjitindarsingh at gmail.com
Wed Feb 22 13:25:16 AEDT 2017
On Tue, 2017-02-21 at 15:42 +1030, Joel Stanley wrote:
> This flash_memory region reserved memory region is used by the host<-
> >bmc
> mailbox daemon.
>
> The vga_memory region is for the host processor's framebuffer when
> using
> the Aspeed as a PCI graphics device. We reserve the maximum region to
> protect against bad host drivers. In the future this should
> correspond
> to the amount of memory we've told the host it can use.
>
> These numbers were generated as follows for Zaius:
>
> $ genmem.py --ram-base 0x80000000 --ram 1G --flash 64M
>
> And for Romulus and Witherspoon:
>
> $ genmem.py --ram-base 0x80000000 --ram 512M --flash 64M --vga 64M
>
> With this script:
>
> def convert_one(s):
> suffixes = [
> ('K', 1024),
> ('M', (1024*1024)),
> ('G', (1024*1024*1024)),
> ('T', (1024*1024*1024*1024)),
> ('th', 1000),
> ('mi', (1000*1000)),
> ('bi', (1000*1000*1000)),
> ('tri', (1000*1000*1000*1000))
> ]
>
> s = s.strip()
>
> factor = 1
> for suffix, mul in suffixes:
> if s.endswith(suffix) or s.endswith(suffix.lower()):
> factor = mul
> s = s[:-len(suffix)]
> break
>
> val = None
>
> if s.startswith('0b'):
> val = convert_binary(s)
> elif s.startswith('0x'):
> val = int(s, 16)
> else:
> for c in 'abcdefABCDEF':
> if c in s:
> val = int(s, 16)
> break
>
> if val is None:
> val = int(s)
>
> val *= factor
>
> return val
>
> import argparse
> parser = argparse.ArgumentParser()
> parser.add_argument('--ram-base')
> parser.add_argument('--ram')
> parser.add_argument('--flash')
> parser.add_argument('--vga')
>
> args = parser.parse_args()
> base = convert_one(args.ram_base)
> size = convert_one(args.ram)
> flash_size = convert_one(args.flash)
> vga_size = 0
> if args.vga:
> vga_size = convert_one(args.vga)
>
> vga_base = base + size - vga_size
> flash_base = base + size - vga_size - flash_size
>
> if flash_base % flash_size != 0:
> print("Error: flash base address not a multiple of window.
> Rounding down")
> flash_base -= flash_base % flash_size
>
> print("memory {\r\n\treg = <0x%08x 0x%08x>;\r\n}" % (base, size))
> if vga_size > 0:
> print("vga_memory {\r\n\tno-map;\r\n\treg = <0x%08x
> 0x%08x>;\r\n}" % (vga_base, vga_base))
> print("flash_memory {\r\n\tno-map;\r\n\treg = <0x%08x 0x%08x>;\r\n}"
> % (flash_base, flash_size))
>
> Signed-off-by: Joel Stanley <joel at jms.id.au>
> ---
> arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts | 16
> ++++++++++++++++
> arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts | 9 +++++++--
> arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts | 4 ++--
> 3 files changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> index 58baf87454e2..7293b41239a3 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> @@ -20,6 +20,22 @@
> reg = <0x80000000 0x20000000>;
> };
>
> + reserved-memory {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + vga_memory: region at 9c000000 {
> + no-map;
> + reg = <0x9c000000 0x04000000>; /* 64M */
> + };
> +
> + flash_memory: region at 98000000 {
> + no-map;
> + reg = <0x98000000 0x04000000>; /* 64M */
> + };
> + };
> +
> fsi-master {
> compatible = "ibm,fsi-master", "ibm,fsi-master-
> gpio";
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> index 2cbdeba88908..1ea8f65c1dab 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> @@ -25,9 +25,14 @@
> #size-cells = <1>;
> ranges;
>
> - flash_memory: region at 94000000 {
> + vga_memory: region at 9c000000 {
> no-map;
> - reg = <0x94000000 0x04000000>; /* 64M */
> + reg = <0x9c000000 0x04000000>; /* 64M */
> + };
> +
> + flash_memory: region at 98000000 {
> + no-map;
> + reg = <0x98000000 0x04000000>; /* 64M */
> };
> };
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> index e1c9b3f4fe44..c3a6a8656b3e 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> @@ -25,9 +25,9 @@
> #size-cells = <1>;
> ranges;
>
> - flash_memory: region at 94000000 {
> + flash_memory: region at bc000000 {
> no-map;
> - reg = <0x94000000 0x04000000>; /* 64M */
> + reg = <0xbc000000 0x04000000>; /* 64M */
> };
> };
>
FWIW:
Reviewed-by: Suraj Jitindar Singh <sjitindarsingh at gmail.com>
More information about the openbmc
mailing list