UPSTREAM: arm64: relocatable: deal with physically misaligned kernel images
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 18 Apr 2016 15:09:47 +0000 (17:09 +0200)
committerJeff Vander Stoep <jeffv@google.com>
Fri, 14 Oct 2016 19:48:53 +0000 (12:48 -0700)
commit663cc539523fbf35732ba0af6a15bcb6d6370c91
tree260d80408c1d686dd80169cbfabb1c713e02cb98
parentd9e3c1d5f7bd8df275f8bce5ed78393c7a5fb22a
UPSTREAM: arm64: relocatable: deal with physically misaligned kernel images

When booting a relocatable kernel image, there is no practical reason
to refuse an image whose load address is not exactly TEXT_OFFSET bytes
above a 2 MB aligned base address, as long as the physical and virtual
misalignment with respect to the swapper block size are equal, and are
both aligned to THREAD_SIZE.

Since the virtual misalignment is under our control when we first enter
the kernel proper, we can simply choose its value to be equal to the
physical misalignment.

So treat the misalignment of the physical load address as the initial
KASLR offset, and fix up the remaining code to deal with that.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Bug: 30369029
Bug: 32122850

(cherry picked from commit 08cdac619c81b3fa8cd73aeed2330ffe0a0b73ca)
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
Change-Id: I658cb3467ba9a4f5b1f5a1cbb972fdc5a3562bf0
arch/arm64/kernel/head.S
arch/arm64/kernel/kaslr.c