cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
roddyvann2
Observer
Observer
4,491 Views
Registered: ‎01-24-2011

Linux on ML605 with 2GB DIMM only works with mem=900M boot argument

I am building Linux (Little Endian for AXI bus; 2.6.37-rc4) for the ML605 board with the stock initramfs. I have succeeded in running U-Boot and Linux for the board as supplied with Xilinx (with the 512MB DIMM).

 

I require 2GB of memory, so have installed the MT8JSF25664HZ-1G4D1 DIMM (which is supported by the MIG). I've modified the provided SDK memory test so that it tests all 2GB (except the first little bit that the memory tester's running in), and it passes this test. I've rebuilt U-Boot and Linux -- I'm booting Linux via U-Boot.

 

If I provide a "mem=900M" boot argument to Linux, then it boots fine (and "top" shows all 900M). If I don't provide this argument, then Linux doesn't get beyond:

 

U-Boot> bootm
## Booting kernel from Legacy Image at 86000000 ...
   Image Name:   Linux-2.6.37-rc4-00710-g6e3f475-
   Image Type:   MicroBlaze Linux Kernel Image (uncompressed)
   Data Size:    4376968 Bytes = 4.2 MiB
   Load Address: 80000000
   Entry Point:  80000000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
early_printk_console is enabled at 0x40401000
Ramdisk addr 0x00000003, Compiled-in FDT at 0xc021af58

 

(but of course I know my console is setup correctly).

 

I've attached my DTS file. Should I be doing something in the kernel .config (which I'll attach in a separate post) to do with the virtual memory configuration?

 

Thanks in advance for any help.

 

Roddy Vann

0 Kudos
3 Replies
roddyvann2
Observer
Observer
4,490 Views
Registered: ‎01-24-2011

.config file attached to this post...

 

P.S. I don't know if it's relevant, but when it boots, the mem=900M version tells me the following:

 

setup_memory: max_mapnr: 0x38400
setup_memory: min_low_pfn: 0x80000
setup_memory: max_low_pfn: 0xb8400
On node 0 totalpages: 230400
free_area_init_node: node 0, pgdat c02a1880, node_mem_map c0446000
  Normal zone: 1800 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 228600 pages, LIFO batch:31

 

0 Kudos
Anonymous
Not applicable
4,469 Views

I think you just need to update the memory size in in .dts to let it know about the full 2GB address range (or less depending on how much you want to make the kernel aware of):

 

DDR3_SDRAM: memory@80000000 {
device_type = "memory";
reg = < 0x80000000 0x80000000 >;
} ;
0 Kudos
roddyvann2
Observer
Observer
4,465 Views
Registered: ‎01-24-2011

Dear Toneal,

Thank you for your message.

Sadly, I posted the wrong DTS file -- so sorry about this. Correct one now attached.

Roddy

P.S. You will see in this DTS file that I tried mem=1200M. Linux now begins to boot, but hangs before it gets to a prompt.

0 Kudos