Hello, All!

This post is about how to eliminate memory restriction 256MB in realview-pbxa9 platform (ARM Cortex A9 processor). The problem is that L4 bootstrap doesn't scan all RAM memory presented on this board. In QEMU source code for this platform (see hw/realview.c in QEMU source directory, function: realview_init) we can find that it can be 3 memory intervals in pbx a9:

1) base=0x00, size=min(sz, 256MB)
This is "SDRAM1"
2) base=0x20000000, size=sz-512MB   (appears when sz>512)
This is called "core tile ram"
3) base=0x70000000, size=512
This is "SDRAM2",
where sz is a total board memory, in QEMU specified via -m option.
If that memory map is true (I have no pbx-a9 board operator's manual), we can make a simple patch to L4 bootstrap (file <genode>/base-foc/contrib/l4/pkg/bootstrap/server/src/platform/rv.cc), that extends a basic 256MB memory to 256MB+512MB by overloading setup_memory_map virtual function.

namespace {
class Platform_arm_rv : public Platform_single_region_ram
{
  bool probe() { return true; }

  //fix a memory limit 256MB in realview-pbxa9.platform.  Adds another memory chip of 512MB.
  //WARNING: this fix works only if 512MB memory chip (or more) is present!
  //In case of QEMU you must run it with -m 512 or higher.
  void setup_memory_map(l4util_mb_info_t *,
                        Region_list *ram, Region_list *)
  {
    ram->add(Region::n(0x0,        0x10000000, ".ram", Region::Ram));  //SDRAM as it defined in realview.c (QUEMU sources)
    ram->add(Region::n(0x70000000, 0x90000000, ".ram", Region::Ram));  //the second 512MB SDRAM
    //TODO: add more RAM regions if you need it according to the the platform map.
  }
   
  void init()
  {
    static L4::Uart_pl011 _uart(36,36);
    _uart.startup(0x10009000);
    set_stdio_uart(&_uart);
  }
};
}

REGISTER_PLATFORM(Platform_arm_rv);


This is an example patch, it would be more correct (if total RAM size is less then 512) to find total memory size first, then add the memory regions, regarding a total memory size.
I hope it will be usefull.
Best regards, and happy cristmas&new year.

Evgeny Fedotov.
Samsung Research Center,
Moscow.