ipq806x: add kernel 4.14 support
[openwrt/openwrt.git] / target / linux / ipq806x / patches-4.14 / 0060-HACK-arch-arm-force-ZRELADDR-on-arch-qcom.patch
1 From fa71139b55e114aa8c3c4823ff8ee7d49ee810d4 Mon Sep 17 00:00:00 2001
2 From: Mathieu Olivari <mathieu@codeaurora.org>
3 Date: Wed, 29 Apr 2015 15:21:46 -0700
4 Subject: [PATCH 60/69] HACK: arch: arm: force ZRELADDR on arch-qcom
5
6 ARCH_QCOM is using the ARCH_MULTIPLATFORM option, as now recommended
7 on most ARM architectures. This automatically calculate ZRELADDR by
8 masking PHYS_OFFSET with 0xf8000000.
9
10 However, on IPQ806x, the first ~20MB of RAM is reserved for the hardware
11 network accelerators, and the bootloader removes this section from the
12 layout passed from the ATAGS (when used).
13
14 For newer bootloader, when DT is used, this is not a problem, we just
15 reserve this memory in the device tree. But if the bootloader doesn't
16 have DT support, then ATAGS have to be used. In this case, the ARM
17 decompressor will position the kernel in this low mem, which will not be
18 in the RAM section mapped by the bootloader, which means the kernel will
19 freeze in the middle of the boot process trying to map the memory.
20
21 As a work around, this patch allows disabling AUTO_ZRELADDR when
22 ARCH_QCOM is selected. It makes the zImage usage possible on bootloaders
23 which don't support device-tree, which is the case on certain early
24 IPQ806x based designs.
25
26 Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
27 ---
28 arch/arm/Kconfig | 2 +-
29 arch/arm/Makefile | 2 ++
30 arch/arm/mach-qcom/Makefile.boot | 1 +
31 3 files changed, 4 insertions(+), 1 deletion(-)
32 create mode 100644 arch/arm/mach-qcom/Makefile.boot
33
34 --- a/arch/arm/Kconfig
35 +++ b/arch/arm/Kconfig
36 @@ -341,7 +341,7 @@
37 depends on MMU
38 select ARM_HAS_SG_CHAIN
39 select ARM_PATCH_PHYS_VIRT
40 - select AUTO_ZRELADDR
41 + select AUTO_ZRELADDR if !ARCH_QCOM
42 select TIMER_OF
43 select COMMON_CLK
44 select GENERIC_CLOCKEVENTS
45 --- a/arch/arm/Makefile
46 +++ b/arch/arm/Makefile
47 @@ -255,9 +255,11 @@ MACHINE := arch/arm/mach-$(word 1,$(mac
48 else
49 MACHINE :=
50 endif
51 +ifeq ($(CONFIG_ARCH_QCOM),)
52 ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
53 MACHINE :=
54 endif
55 +endif
56
57 machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
58 platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
59 --- /dev/null
60 +++ b/arch/arm/mach-qcom/Makefile.boot
61 @@ -0,0 +1 @@
62 +zreladdr-y+= 0x42208000