Bug of 1G memory use.

*Description:*

When allow system using more than 512M of memory, user level apps execution can cause ‘Segmentation fault’ or glibc error.

*
Reproduction:*

*On PandaBoard:*

_In bootstrap_: in /base-foc/contrib/l4/mk/platforms/pandaboard.conf/

if set

/PLATFORM_RAM_SIZE_MB = *1024*/

(whole physical memory present on PandaBoard)//

//

And if allow L4Linux using more than 512M memory:

when modify run script: ‘/ports-foc/run/linux_panda.run’:/__

<start name="vmlinux.1" priority="-1">

<binary name="l4linux"/>

<resource name="RAM" quantum="796M"/>

<config args="mem=*754M* l4x_rd=initrd.gz">

<block label="sda" />

</config>

</start>

*(754M* is given for example*)*

System boots up. But user level apps can cause ‘Segmentation fault’ or glibc error.

Error is stable on command ‘*find*’ on fresh-booted system.

*On**QEMU:***

To support 1G of memory on Realview platform file ‘/base-foc/contrib/l4/pkg/bootstrap/server/src/platform/rv.cc’/ (attached) was modified. (Address regions got from platform documentation.)

On system boot below error occurs:

/Assertion failed: 'idx < _nchips' [ret=0xf006f214]/

//Projects/l4bsdd/base-foc/contrib/kernel/fiasco/src/kern/irq_mgr_multi_chip.cpp:76 at f0007c00/

There is no such error if Fiasco.OC was built with –O1 gcc option (only with –O2), but L4Linux can’t boot anyway because of memory allocation error.

Best regards,
Vladimir Shilkin


/*!
 * \file   support_rv.cc
 * \brief  Support for the rv platform
 *
 * \date   2008-01-02
 * \author Adam Lackorznynski <[email protected]>
 *
 */
/*
 * (c) 2008-2009 Author(s)
 *     economic rights: Technische Universit채t Dresden (Germany)
 *
 * This file is part of TUD:OS and distributed under the terms of the
 * GNU General Public License 2.
 * Please see the COPYING-GPL-2 file for details.
 */

#include "support.h"

#include <l4/drivers/uart_pl011.h>

namespace {
class Platform_arm_rv : public Platform_single_region_ram
{
  bool probe() { return true; }
  void init()
  {
    static L4::Io_register_block_mmio r(0x10009000);
    static L4::Uart_pl011 _uart;
    _uart.startup(&r);
    set_stdio_uart(&_uart);
  }


  void setup_memory_map(l4util_mb_info_t *,
                        Region_list *ram, Region_list *)
  {
    ram->add(Region::n(0x70000000, 0x80000000, ".ram", Region::Ram));  //main SDRAM as it defined in realview.c (QUEMU sources)
    ram->add(Region::n(0x80000000, 0x90000000, ".ram", Region::Ram));  //make the second 256 MB SDRAM avaliable.
    //In case of QEMU you must run it with -m 512 or higher.

    ram->add(Region::n(0x20000000, 0x40000000, ".ram", Region::Ram));  //make the third 512 MB SDRAM avaliable. Here we have 1024MB total!
    //In case of QEMU you must run it with -m 1024 or higher.
  }

};
}

REGISTER_PLATFORM(Platform_arm_rv);

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to