Re: initrd problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>Среда, 30 января 2019, 12:35 +03:00 от Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>:
>> >> >> I decided to change the size of the UBI volume for the root file system to 60 MB.
>> >> >> Now I get a weird OOM error. Turning on debug information shows a conflict,
>> >> >> but I do not quite understand where to look for the problem.
>> >> >> Where is the starting point to try to solve this problem?
>> >> >> 
>> >> >> malloc space: 0x95df8d40 -> 0x97df8d3f (size 32 MiB)
>> >> >> 
>> >> >> Loading ARM Linux zImage '/dev/nand0.system.ubi.kernel'
>> >> >> __request_region ok: 0x92000000:0x922a244f
>> >> >The Kernel documentation recommends putting the Kernel 32MiB into SDRAM
>> >> >to avoid relocation. This is what we see here.
>> >> >
>> >> >> __request_region: 0x923a3000:0x95e02fff conflicts with 0x95df8d40:0x97df8d3f
>> >> >
>> >> >Now we try allocate space for the initrd above it which is 60MiB. This
>> >> >conflicts with the malloc space.
>> >> >
>> >> >So yes, you're out of memory.
>> >> Memory should be enough (256 Mb). I think the problem is that the memory is
>> >> divided into two banks of 128 Mb each.
>> >> 
>> >> Just look for a next line:
>> >> __request_region: 0x923a3000:0x95e02fff outside parent resource 0x98000000:0x9fffffff
>> >> 
>> >> Maybe we need some kind of option to merge nearby banks?
>> >
>> >If I'm not mistaken the banks are not really nearby. You should have two
>> >banks, one from 0x90000000 to 0x97ffffff and one from 0xa0000000 to
>> >0xa7ffffff.
>> >I don't know where the resource 0x98000000:0x9fffffff comes from. Could
>> >you paste the output of the iomem command? Are you using the code from
>> >arch/arm/mach-imx/esdctl.c or are you bypassing it?
>> 
>> It is not an error. CCMX51 not using ESDCTL.
>> The first bank is minimal size 128M. The second is a chain to first, its size
>> depends on module variant.
>
>I see. Similar to what is done in arch/arm/boards/ccxmx51/ccxmx51.c,
>right?
>
>In that case merging the two banks won't give you much since barebox
>will already be placed in the middle of the available RAM.
>
>Can't you shuffle the code so that you can detect the board variant and
>thus the amount of SDRAM before even calling barebox_arm_entry? You
>would need some early variant of imx_iim_read(), but in the end this
>goes down to a register read, so shouldn't be hard to implement.
>Then you could drop the splitting into separate SDRAM regions entirely.

At the moment I have used an alternative method to solve this problem.
I have reduced MALLOC_SIZE to 16 Mb and as a result, the 60 Mb initd
loaded fine for boards with 128 MB RAM.

---
_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux