OSDN Git Service

b56480deaa1b0a31dc4111769a9e333e87ef2fc6
[immortalwrt/immortalwrt.git] / target / linux / ipq806x / patches-5.15 / 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 @@ -321,7 +321,7 @@ config ARCH_MULTIPLATFORM
37         select ARCH_SELECT_MEMORY_MODEL
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 @@ -251,9 +251,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