arm64/efi: do not assume DRAM base is aligned to 2 MB
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 29 Oct 2015 14:07:25 +0000 (15:07 +0100)
committerWill Deacon <will.deacon@arm.com>
Thu, 29 Oct 2015 16:10:58 +0000 (16:10 +0000)
commit73effccb9196ccc0241c3fb51dfd8de1d14ae8ed
treeb5cc57b7c2930d53923b1edc704de3ff74df6231
parent9702970c7bd3e2d6fecb642a190269131d4ac16c
arm64/efi: do not assume DRAM base is aligned to 2 MB

The current arm64 Image relocation code in the UEFI stub assumes that
the dram_base argument it receives is always a multiple of 2 MB. In
reality, it is simply the lowest start address of all RAM entries in
the UEFI memory map, which means it could be any multiple of 4 KB.

Since the arm64 kernel Image needs to reside TEXT_OFFSET bytes beyond
a 2 MB aligned base, or it will fail to boot, make sure we round dram_base
to 2 MB before using it to calculate the relocation address.

Fixes: e38457c361b30c5a ("arm64: efi: prefer AllocatePages() over efi_low_alloc() for vmlinux")
Reported-by: Timur Tabi <timur@codeaurora.org>
Tested-by: Timur Tabi <timur@codeaurora.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/efi-stub.c