52 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| README on the SDRAM Controller for the LH7a40X
 | |
| ==============================================
 | |
| 
 | |
| The standard configuration for the SDRAM controller generates a sparse
 | |
| memory array.  The precise layout is determined by the SDRAM chips.  A
 | |
| default kernel configuration assembles the discontiguous memory
 | |
| regions into separate memory nodes via the NUMA (Non-Uniform Memory
 | |
| Architecture) facilities.  In this default configuration, the kernel
 | |
| is forgiving about the precise layout.  As long as it is given an
 | |
| accurate picture of available memory by the bootloader the kernel will
 | |
| execute correctly.
 | |
| 
 | |
| The SDRC supports a mode where some of the chip select lines are
 | |
| swapped in order to make SDRAM look like a synchronous ROM.  Setting
 | |
| this bit means that the RAM will present as a contiguous array.  Some
 | |
| programmers prefer this to the discontiguous layout.  Be aware that
 | |
| may be a penalty for this feature where some some configurations of
 | |
| memory are significantly reduced; i.e. 64MiB of RAM appears as only 32
 | |
| MiB.
 | |
| 
 | |
| There are a couple of configuration options to override the default
 | |
| behavior.  When the SROMLL bit is set and memory appears as a
 | |
| contiguous array, there is no reason to support NUMA.
 | |
| CONFIG_LH7A40X_CONTIGMEM disables NUMA support.  When physical memory
 | |
| is discontiguous, the memory tables are organized such that there are
 | |
| two banks per nodes with a small gap between them.  This layout wastes
 | |
| some kernel memory for page tables representing non-existent memory.
 | |
| CONFIG_LH7A40X_ONE_BANK_PER_NODE optimizes the node tables such that
 | |
| there are no gaps.  These options control the low level organization
 | |
| of the memory management tables in ways that may prevent the kernel
 | |
| from booting or may cause the kernel to allocated excessively large
 | |
| page tables.  Be warned.  Only change these options if you know what
 | |
| you are doing.  The default behavior is a reasonable compromise that
 | |
| will suit all users.
 | |
| 
 | |
| --
 | |
| 
 | |
| A typical 32MiB system with the default configuration options will
 | |
| find physical memory managed as follows.
 | |
| 
 | |
|    node 0: 0xc0000000 4MiB
 | |
|            0xc1000000 4MiB
 | |
|    node 1: 0xc4000000 4MiB
 | |
|            0xc5000000 4MiB
 | |
|    node 2: 0xc8000000 4MiB
 | |
|            0xc9000000 4MiB
 | |
|    node 3: 0xcc000000 4MiB
 | |
|            0xcd000000 4MiB
 | |
| 
 | |
| Setting CONFIG_LH7A40X_ONE_BANK_PER_NODE will put each bank into a
 | |
| separate node.
 |