← Back to team overview

ubuntu-phone team mailing list archive

[PATCH 2/2] [PATCH] UBUNTU: Enable caching and buffering of whole RAM in the decompressor

 

OriginalAuthor: Mike Kasick <mike@xxxxxxxxxx>

This is to speed-up booting if this kernel is booted using
kexec-hardboot[1]. Without this patch, decompressor is very slow
to decompress, because it is located far above the kernel destination.

Ported from Jens Andersen <jens.andersen@xxxxxxxxx>'s
kernel for Asus TF201 [2].

[1] Hardboot: http://forum.xda-developers.com/showthread.php?t=1266827
[2] Original repository: http://git.io/EXpn2A

Signed-off-by: Vojtech Bocek <vbocek@xxxxxxxxx>
---
 arch/arm/boot/compressed/head.S           |    6 ++++++
 arch/arm/mach-tegra/include/mach/memory.h |    4 ++++
 2 files changed, 10 insertions(+)

diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 5773670..99fa555 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -9,6 +9,7 @@
  * published by the Free Software Foundation.
  */
 #include <linux/linkage.h>
+#include <asm/memory.h>
 
 /*
  * Debugging stuff
@@ -509,9 +510,14 @@ __setup_mmu:	sub	r3, r4, #16384		@ Page directory size
  * bits for the RAM area only.
  */
 		mov	r0, r3
+#if defined(PLAT_PHYS_OFFSET) && defined(END_MEM)
+		mov  r9, #PLAT_PHYS_OFFSET	@ start of RAM
+		ldr  r10, =END_MEM		@ end of RAM
+#else
 		mov	r9, r0, lsr #18
 		mov	r9, r9, lsl #18		@ start of RAM
 		add	r10, r9, #0x10000000	@ a reasonable RAM size
+#endif
 		mov	r1, #0x12
 		orr	r1, r1, #3 << 10
 		add	r2, r3, #16384
diff --git a/arch/arm/mach-tegra/include/mach/memory.h b/arch/arm/mach-tegra/include/mach/memory.h
index 5f51066..c243a32 100644
--- a/arch/arm/mach-tegra/include/mach/memory.h
+++ b/arch/arm/mach-tegra/include/mach/memory.h
@@ -29,6 +29,10 @@
 #define PLAT_PHYS_OFFSET		UL(0x80000000)
 #endif
 
+#if defined(CONFIG_MACH_GROUPER)
+#define END_MEM		            UL(0xBEA00000)
+#endif
+
 /*
  * Unaligned DMA causes tegra dma to place data on 4-byte boundary after
  * expected address. Call to skb_reserve(skb, NET_IP_ALIGN) was causing skb
-- 
1.7.10.4



References