Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0445dfa authored by Marc Zyngier's avatar Marc Zyngier
Browse files

arm64: KVM: Reserve 4 additional instructions in the BPI template



So far, we only reserve a single instruction in the BPI template in
order to branch to the vectors. As we're going to stuff a few more
instructions there, let's reserve a total of 5 instructions, which
we're going to patch later on as required.

We also introduce a small refactor of the vectors themselves, so that
we stop carrying the target branch around.

Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Reviewed-by: default avatarAndrew Jones <drjones@redhat.com>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 4340ba80
Loading
Loading
Loading
Loading
+15 −24
Original line number Diff line number Diff line
@@ -19,33 +19,24 @@
#include <linux/linkage.h>
#include <linux/arm-smccc.h>

.macro ventry target
	.rept 31
.macro hyp_ventry
	.align 7
1:	.rept 27
	nop
	.endr
	b	\target
	b	__kvm_hyp_vector + (1b - 0b)
	nop
	nop
	nop
	nop
.endm

.macro vectors target
	ventry \target + 0x000
	ventry \target + 0x080
	ventry \target + 0x100
	ventry \target + 0x180

	ventry \target + 0x200
	ventry \target + 0x280
	ventry \target + 0x300
	ventry \target + 0x380

	ventry \target + 0x400
	ventry \target + 0x480
	ventry \target + 0x500
	ventry \target + 0x580

	ventry \target + 0x600
	ventry \target + 0x680
	ventry \target + 0x700
	ventry \target + 0x780
.macro generate_vectors
0:
	.rept 16
	hyp_ventry
	.endr
	.org 0b + SZ_2K		// Safety measure
.endm


@@ -55,7 +46,7 @@
	.align	11
ENTRY(__bp_harden_hyp_vecs_start)
	.rept 4
	vectors __kvm_hyp_vector
	generate_vectors
	.endr
ENTRY(__bp_harden_hyp_vecs_end)