OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 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 @@ config ARCH_MULTIPLATFORM |
||
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 |