Hello!
I'am running linux-xlnx-xlnx_3.8 on both Zedboard and Mini-ITX board and have observed strange issue while booting the kernel. When uImage file gets bigger (for example when I am adding some new kernel module), I am observing following problem. Just after displaying "Starting kernel ..." system stops.
I've figured out that the only difference between two kernel builds (the working one and the one that is not working) is the placement of _edata_loc in System.map. This problem seems to disappear after small change in vmlinux.lds.S:
__init_end = .;
. = ALIGN(2*THREAD_SIZE); // <--------
__data_loc = .;
System.map of not working Linux:
c0544dc0 D __per_cpu_end
c0546000 A __data_loc
c0548000 D _data
c0548000 D _sdata
...
c059f740 d descriptor.26987
c059f750 A _edata_loc // <--------
c059f758 d descriptor.26908
...
c05a1750 D _edata
System.map of working Linux:
c0544dc0 D __per_cpu_end
c0548000 A __data_loc
c0548000 D _data
c0548000 D _sdata
...
c05a1750 D _edata
c05a1750 A _edata_loc // <--------
I have no idea where this problem is coming from. Is there any other, more elegant solution to fix it?