52 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								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.
							 |