Hi James, On 04/06/2019 15:45, James Morse wrote: > 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. > > Signed-off-by: James Morse <james.morse@xxxxxxx> > --- > arch/arm64/include/asm/kvm_asm.h | 6 ++++++ > arch/arm64/kvm/hyp/hyp-entry.S | 10 +++++++++- > arch/arm64/kvm/va_layout.c | 7 +++---- > 3 files changed, 18 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h > index ff73f5462aca..9170c43b332f 100644 > --- a/arch/arm64/include/asm/kvm_asm.h > +++ b/arch/arm64/include/asm/kvm_asm.h > @@ -41,6 +41,12 @@ > {ARM_EXCEPTION_TRAP, "TRAP" }, \ > {ARM_EXCEPTION_HYP_GONE, "HYP_GONE" } > > +/* > + * Size of the HYP vectors preamble. kvm_patch_vector_branch() generates code > + * that jumps over this. > + */ > +#define KVM_VECTOR_PREAMBLE 4 Nit: I would use AARCH64_INSN_SIZE instead of 4 for the value if possible. Makes it clear what the value of the vectore preamble represent (and if we ad instruction we just multiply). Otherwise the patch seems a good improvement. Reviewed-by: Julien Thierry <julien.thierry@xxxxxxx> Thanks, -- Julien Thierry _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm