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

login
register
mail settings
Submitter Vojtech Bocek
Date Nov. 22, 2012, 7:45 p.m.
Message ID <1353613533-15835-2-git-send-email-vbocek@gmail.com>
Download mbox | patch
Permalink /patch/201548/
State New
Headers show

Comments

Vojtech Bocek - Nov. 22, 2012, 7:45 p.m.
OriginalAuthor: Mike Kasick <mike@kasick.org>

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

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

Patch

diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 24701d6..401efb4 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
@@ -467,9 +468,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