KVM: arm64: Abstract the size of the HYP vectors pre-amble
authorJames Morse <james.morse@arm.com>
Tue, 18 Jun 2019 15:17:34 +0000 (16:17 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 5 Jul 2019 12:03:29 +0000 (13:03 +0100)
commit3dbf100b0b10e91d65bd83b91cee3ef61f1b96c4
treec02ee88d3b53d1dd082de67bc70f33048ea82426
parent2b68a2a963a157f024c67c0697b16f5f792c8a35
KVM: arm64: Abstract the size of the HYP vectors pre-amble

The EL2 vector hardening feature causes KVM to generate vectors for
each type of CPU present in the system. The generated sequences already
do some of the early guest-exit work (i.e. saving registers). To avoid
duplication the generated vectors branch to the original vector just
after the preamble. This size is hard coded.

Adding new instructions to the HYP vector causes strange side effects,
which are difficult to debug as the affected code is patched in at
runtime.

Add KVM_VECTOR_PREAMBLE to tell kvm_patch_vector_branch() how big
the preamble is. The valid_vect macro can then validate this at
build time.

Reviewed-by: Julien Thierry <julien.thierry@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/include/asm/kvm_asm.h
arch/arm64/kvm/hyp/hyp-entry.S
arch/arm64/kvm/va_layout.c