mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2024-10-19 14:08:17 +02:00
kernel: re-apply 300-arch-arm-force-ZRELADDR-on-arch-qcom.patch on 4.9 (FS#549)
Fixes memory corruption issues. See commit bdcba36442a4 for more details. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
9f09bd6606
commit
2a3952bcd5
@ -56,7 +56,6 @@ CONFIG_ARM_THUMB=y
|
|||||||
CONFIG_ARM_UNWIND=y
|
CONFIG_ARM_UNWIND=y
|
||||||
CONFIG_ARM_VIRT_EXT=y
|
CONFIG_ARM_VIRT_EXT=y
|
||||||
CONFIG_AT803X_PHY=y
|
CONFIG_AT803X_PHY=y
|
||||||
CONFIG_AUTO_ZRELADDR=y
|
|
||||||
# CONFIG_B53 is not set
|
# CONFIG_B53 is not set
|
||||||
# CONFIG_BINFMT_FLAT is not set
|
# CONFIG_BINFMT_FLAT is not set
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
From b12e230f09d4481424e6a5d7e2ae566b6954e83f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Olivari <mathieu@codeaurora.org>
|
||||||
|
Date: Wed, 29 Apr 2015 15:21:46 -0700
|
||||||
|
Subject: [PATCH] HACK: arch: arm: force ZRELADDR on arch-qcom
|
||||||
|
|
||||||
|
ARCH_QCOM is using the ARCH_MULTIPLATFORM option, as now recommended
|
||||||
|
on most ARM architectures. This automatically calculate ZRELADDR by
|
||||||
|
masking PHYS_OFFSET with 0xf8000000.
|
||||||
|
|
||||||
|
However, on IPQ806x, the first ~20MB of RAM is reserved for the hardware
|
||||||
|
network accelerators, and the bootloader removes this section from the
|
||||||
|
layout passed from the ATAGS (when used).
|
||||||
|
|
||||||
|
For newer bootloader, when DT is used, this is not a problem, we just
|
||||||
|
reserve this memory in the device tree. But if the bootloader doesn't
|
||||||
|
have DT support, then ATAGS have to be used. In this case, the ARM
|
||||||
|
decompressor will position the kernel in this low mem, which will not be
|
||||||
|
in the RAM section mapped by the bootloader, which means the kernel will
|
||||||
|
freeze in the middle of the boot process trying to map the memory.
|
||||||
|
|
||||||
|
As a work around, this patch allows disabling AUTO_ZRELADDR when
|
||||||
|
ARCH_QCOM is selected. It makes the zImage usage possible on bootloaders
|
||||||
|
which don't support device-tree, which is the case on certain early
|
||||||
|
IPQ806x based designs.
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
||||||
|
---
|
||||||
|
arch/arm/Kconfig | 2 +-
|
||||||
|
arch/arm/Makefile | 2 ++
|
||||||
|
arch/arm/mach-qcom/Makefile.boot | 1 +
|
||||||
|
3 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 arch/arm/mach-qcom/Makefile.boot
|
||||||
|
|
||||||
|
--- a/arch/arm/Kconfig
|
||||||
|
+++ b/arch/arm/Kconfig
|
||||||
|
@@ -332,7 +332,7 @@ config ARCH_MULTIPLATFORM
|
||||||
|
depends on MMU
|
||||||
|
select ARM_HAS_SG_CHAIN
|
||||||
|
select ARM_PATCH_PHYS_VIRT
|
||||||
|
- select AUTO_ZRELADDR
|
||||||
|
+ select AUTO_ZRELADDR if !ARCH_QCOM
|
||||||
|
select CLKSRC_OF
|
||||||
|
select COMMON_CLK
|
||||||
|
select GENERIC_CLOCKEVENTS
|
||||||
|
--- a/arch/arm/Makefile
|
||||||
|
+++ b/arch/arm/Makefile
|
||||||
|
@@ -251,9 +251,11 @@ MACHINE := arch/arm/mach-$(word 1,$(mac
|
||||||
|
else
|
||||||
|
MACHINE :=
|
||||||
|
endif
|
||||||
|
+ifeq ($(CONFIG_ARCH_QCOM),)
|
||||||
|
ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
|
||||||
|
MACHINE :=
|
||||||
|
endif
|
||||||
|
+endif
|
||||||
|
|
||||||
|
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
|
||||||
|
platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/mach-qcom/Makefile.boot
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+zreladdr-y+= 0x42208000
|
Loading…
Reference in New Issue
Block a user