[source] ar71xx: fix lzma loader performance issues

LEDE Commits lede-commits at lists.infradead.org
Tue Oct 24 04:24:41 PDT 2017


nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/8c5702f2a07cebfbee6f9e628b63d88b8806ca1b

commit 8c5702f2a07cebfbee6f9e628b63d88b8806ca1b
Author: Julien Dusser <julien.dusser at free.fr>
AuthorDate: Wed Jul 19 14:52:35 2017 +0200

    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 at free.fr>
---
 target/linux/ar71xx/image/lzma-loader/src/head.S | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/target/linux/ar71xx/image/lzma-loader/src/head.S b/target/linux/ar71xx/image/lzma-loader/src/head.S
index 47a7c9b..d414b14 100644
--- a/target/linux/ar71xx/image/lzma-loader/src/head.S
+++ b/target/linux/ar71xx/image/lzma-loader/src/head.S
@@ -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



More information about the lede-commits mailing list