Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: arm64: selftests: Initialize HCR_EL2

Initialize HCR_EL2 such that EL2&0 is considered 'InHost', allowing the
use of (mostly) unmodified EL1 selftests at EL2.

Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>

authored by

Oliver Upton and committed by
Marc Zyngier
05c93cbe 7ae44d1c

+6
+6
tools/testing/selftests/kvm/lib/arm64/processor.c
··· 369 369 vcpu_set_reg(vcpu, ctxt_reg_alias(vcpu, SYS_MAIR_EL1), DEFAULT_MAIR_EL1); 370 370 vcpu_set_reg(vcpu, ctxt_reg_alias(vcpu, SYS_TTBR0_EL1), ttbr0_el1); 371 371 vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TPIDR_EL1), vcpu->id); 372 + 373 + if (!vcpu_has_el2(vcpu)) 374 + return; 375 + 376 + vcpu_set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_HCR_EL2), 377 + HCR_EL2_RW | HCR_EL2_TGE | HCR_EL2_E2H); 372 378 } 373 379 374 380 void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent)