linux/arch/arm64/kernel
Ard Biesheuvel 08cdac619c 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>
2016-04-26 12:23:28 +01:00
..
vdso arm64: vdso: Mark vDSO code as read-only 2016-02-16 18:20:23 +00:00
.gitignore
acpi_parking_protocol.c arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot 2016-02-26 15:39:52 +00:00
acpi.c arm64: make dt_scan_depth1_nodes more readable 2016-04-25 13:54:15 +01:00
alternative.c arm64: mm: fold alternatives into .init 2015-12-10 17:36:08 +00:00
arm64ksyms.c ARM: 8480/2: arm64: add implementation for arm-smccc 2016-01-04 16:24:45 +00:00
armv8_deprecated.c arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
asm-offsets.c arm64 updates for 4.6: 2016-03-17 20:03:47 -07:00
cacheinfo.c arm64: kernel: add support for cpu cache information 2015-01-15 11:55:07 +00:00
cpu_errata.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpu_ops.c arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
cpufeature.c arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpuidle.c arm64: cpuidle: make arm_cpuidle_suspend() a bit more efficient 2016-04-13 14:49:23 +01:00
cpuinfo.c arm64: cpufeature: Check availability of AArch32 2016-04-20 12:22:42 +01:00
debug-monitors.c arm64/debug: Remove superfluous SMP function call 2016-04-14 18:13:03 +01:00
efi-entry.S arm64: move early boot code to the .init segment 2016-04-14 18:11:30 +01:00
efi.c arm64/efi: refactor EFI init and runtime code for reuse by 32-bit ARM 2015-12-09 16:57:23 +00:00
entry32.S arm64: entry32: remove pointless register assignment 2015-07-10 16:47:13 +01:00
entry-fpsimd.S
entry-ftrace.S arm64: ftrace: fix function_graph tracer panic 2015-10-02 11:12:56 +01:00
entry.S arm64/kernel: fix incorrect EL0 check in inv_entry macro 2016-03-21 12:05:34 +00:00
fpsimd.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
ftrace.c arm64: ftrace: modify a stack frame in a safe way 2015-12-21 17:26:01 +00:00
head.S arm64: relocatable: deal with physically misaligned kernel images 2016-04-26 12:23:28 +01:00
hw_breakpoint.c arm64: hw-breakpoint: Remove superfluous SMP function call 2016-04-14 18:13:03 +01:00
hyp-stub.S
image.h arm64: don't map TEXT_OFFSET bytes below the kernel if we can avoid it 2016-04-26 12:23:25 +01:00
insn.c arm64: insn: avoid virt_to_page() translations on core kernel symbols 2016-04-14 16:31:49 +01:00
io.c
irq.c arm64: remove irq_count and do_softirq_own_stack() 2015-12-21 17:26:01 +00:00
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kaslr.c arm64: relocatable: deal with physically misaligned kernel images 2016-04-26 12:23:28 +01:00
kgdb.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
kuser32.S
Makefile arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
module-plts.c arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
module.c arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
module.lds arm64: add support for module PLTs 2016-02-24 14:57:24 +00:00
paravirt.c arm64: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
pci.c arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
perf_callchain.c arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
perf_event.c arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
perf_regs.c perf: Move task_pt_regs sampling into arch code 2015-01-09 11:12:28 +01:00
process.c arm64: Remove the get_thread_info() function 2016-02-18 17:27:05 +00:00
psci.c ARM: 8511/1: ARM64: kernel: PSCI: move PSCI idle management code to drivers/firmware 2016-02-11 15:33:38 +00:00
ptrace.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
return_address.c arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
setup.c arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
signal32.c arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
signal.c arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
sleep.S arm64: kasan: clear stale stack poison 2016-03-09 15:43:42 -08:00
smccc-call.S ARM: 8480/2: arm64: add implementation for arm-smccc 2016-01-04 16:24:45 +00:00
smp_spin_table.c ARM64: kernel: make cpu_ops hooks DT agnostic 2015-05-19 16:09:29 +01:00
smp.c arm64: Fix behavior of maxcpus=N 2016-04-25 15:14:09 +01:00
stacktrace.c arm64: make irq_stack_ptr more robust 2016-02-12 15:53:51 +00:00
suspend.c arm64: unify idmap removal 2016-02-16 15:10:44 +00:00
sys32.c arm64: fix implementation of mmap2 compat syscall 2015-03-19 10:43:51 +00:00
sys_compat.c arm64: compat: align cacheflush syscall with arch/arm 2014-12-01 13:31:12 +00:00
sys.c arm64: compat: Check for AArch32 state 2016-04-20 12:22:42 +01:00
time.c arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
topology.c arm64: kernel: remove non-legit DT warnings when booting using ACPI 2015-07-27 11:08:41 +01:00
trace-events-emulation.h
traps.c arm64: make irq_stack_ptr more robust 2016-02-12 15:53:51 +00:00
vdso.c arm64: vdso: avoid virt_to_page() translations on kernel symbols 2016-04-14 16:31:49 +01:00
vmlinux.lds.S arm64: kernel: perform relocation processing from ID map 2016-04-26 12:21:54 +01:00