arm64: Add percpu vectors for EL1
authorJames Morse <james.morse@arm.com>
Tue, 23 Nov 2021 18:29:25 +0000 (18:29 +0000)
committerJames Morse <james.morse@arm.com>
Wed, 16 Feb 2022 13:17:30 +0000 (13:17 +0000)
commitbd09128d16fac3c34b80bd6a29088ac632e8ce09
treed4018981e47a285a3efac3eb15e2de2074592d61
parentb28a8eebe81c186fdb1a0078263b30576c8e1f42
arm64: Add percpu vectors for EL1

The Spectre-BHB workaround adds a firmware call to the vectors. This
is needed on some CPUs, but not others. To avoid the unaffected CPU in
a big/little pair from making the firmware call, create per cpu vectors.

The per-cpu vectors only apply when returning from EL0.

Systems using KPTI can use the canonical 'full-fat' vectors directly at
EL1, the trampoline exit code will switch to this_cpu_vector on exit to
EL0. Systems not using KPTI should always use this_cpu_vector.

this_cpu_vector will point at a vector in tramp_vecs or
__bp_harden_el1_vectors, depending on whether KPTI is in use.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
arch/arm64/include/asm/vectors.h
arch/arm64/kernel/cpufeature.c
arch/arm64/kernel/entry.S
arch/arm64/kvm/hyp/vhe/switch.c