[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