Who uses memory originally from IO device

Martin Schröder martin.schroeder at openlimit.com
Fri Jul 4 15:15:17 CEST 2014


Am 03.07.2014 18:21, schrieb Martin Schröder:
> My board is equipped with 128MB external DRAM:
>
>> L4 Bootstrapper
>>   Build: #1234 Do 3. Jul 17:34:17 CEST 2014, 4.6.2
>>   Scanning up to 128 MB RAM
>>   Memory size is 128MB (40000000 - 47ffffff)
>>   RAM: 0000000040000000 - 0000000047ffffff: 131072kB
>>   Total RAM: 128MB
>
> In addition the CPU has 128kb internal RAM (so called On-Chip-RAM) which
> is located at address 0 - 0001ffff.
>
> I want to expose this OCRAM as a virtual device to a (already existing)
> kernel driver within l4linux, so I added these few lines to my config:
>
>> OCRAM => new Device() {
>>   .hid= "ocram";
>>   new-res Mmio(0x00000000 .. 0x0001FFFF);
>> }
>>
>> client0 => new System_bus() {
>>   ...
>>   "ocram" = wrap(hw-root.OCRAM);
>> }
>
> Unfortunately IO cannot map this device, but maps instead something else
> which is of no use for me:
>
>> io      | <0x1bff0>IOMEM   [00000000000000-0000000001ffff 20000]
>> non-pref (32bit) (align=1ffff flags=4002)
>> io      | WARNING: phys mmio resource allocation failed
>> io      | <0x1bff0>IOMEM   [00000000000000-0000000001ffff 20000]
>> non-pref (32bit) (align=1ffff flags=4002)
>> io      | allocated resource: <0x1bff0>IOMEM
>> [00000001000000-0000000101ffff 20000] non-pref (align=1ffff flags=4002)
>
> But a few lines up I see:
>
>> MOE: Hello world!
>> MOE: found 109032 KByte free memory
>> MOE: found RAM from 40000000 to 47000000
>> ...
>
> Probably MOE assumes this as normal ram and adds it to its pool.
>
> But how can I inhibit MOE grabbing this piece of RAM and instead assign
> it to the OCRAM device in IO?

After some debugging it am convinced that MOE is not using or blocking 
this OCRAM at address 0x0.

But what is the reason that io cannot allocate the requested memory and 
maps instead something of the same size?


    Martin.








More information about the l4-hackers mailing list