summaryrefslogtreecommitdiff
path: root/arch/arm/mach-cns3xxx/pcie.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2021-08-09 12:57:19 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2021-08-10 12:17:25 +0100
commit463dbba4d189750c2f576449d0bbb11c5413712e (patch)
treef207401d96165739964822b4230795da11fecb35 /arch/arm/mach-cns3xxx/pcie.c
parente73f0f0ee7541171d89f2e2491130c7771ba58d3 (diff)
ARM: 9104/2: Fix Keystone 2 kernel mapping regression
This fixes a Keystone 2 regression discovered as a side effect of defining an passing the physical start/end sections of the kernel to the MMU remapping code. As the Keystone applies an offset to all physical addresses, including those identified and patches by phys2virt, we fail to account for this offset in the kernel_sec_start and kernel_sec_end variables. Further these offsets can extend into the 64bit range on LPAE systems such as the Keystone 2. Fix it like this: - Extend kernel_sec_start and kernel_sec_end to be 64bit - Add the offset also to kernel_sec_start and kernel_sec_end As passing kernel_sec_start and kernel_sec_end as 64bit invariably incurs BE8 endianness issues I have attempted to dry-code around these. Tested on the Vexpress QEMU model both with and without LPAE enabled. Fixes: 6e121df14ccd ("ARM: 9090/1: Map the lowmem and kernel separately") Reported-by: Nishanth Menon <nmenon@kernel.org> Suggested-by: Russell King <rmk+kernel@armlinux.org.uk> Tested-by: Grygorii Strashko <grygorii.strashko@ti.com> Tested-by: Nishanth Menon <nmenon@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/mach-cns3xxx/pcie.c')
0 files changed, 0 insertions, 0 deletions