ar71xx: fix lzma loader performance issues
Some bootloaders set a cache cohenrency to a very slow mode. Use code from Linux kernel to set it to "Cacheable, noncoherent, write-back, write allocate". Perfomance impact is significant on TP-Link EAP245 board, kernel decompression time fall from 33 seconds to less than 1. Signed-off-by: Julien Dusser <julien.dusser@free.fr>
This commit is contained in:
		
				
					committed by
					
						
						Felix Fietkau
					
				
			
			
				
	
			
			
			
						parent
						
							06e41056aa
						
					
				
				
					commit
					8c5702f2a0
				
			@@ -42,6 +42,19 @@ LEAF(startup)
 | 
			
		||||
	mtc0	t0, CP0_STATUS
 | 
			
		||||
	ehb
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Some bootloaders set the 'Kseg0 coherency algorithm' to
 | 
			
		||||
	 * 'Cacheable, noncoherent, write-through, no write allocate'
 | 
			
		||||
	 * and this cause performance issues. Let's go and change it to
 | 
			
		||||
	 * 'Cacheable, noncoherent, write-back, write allocate'
 | 
			
		||||
	 */
 | 
			
		||||
	mfc0	t0, CP0_CONFIG
 | 
			
		||||
	li	t1, ~7			#~CONF_CM_CMASK
 | 
			
		||||
	and	t0, t1
 | 
			
		||||
	ori	t0, 3			#CONF_CM_CACHABLE_NONCOHERENT
 | 
			
		||||
	mtc0	t0, CP0_CONFIG
 | 
			
		||||
	nop
 | 
			
		||||
 | 
			
		||||
	mtc0	zero, CP0_COUNT
 | 
			
		||||
	mtc0	zero, CP0_COMPARE
 | 
			
		||||
	ehb
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user