Commit e2895896 authored by Marc Zyngier's avatar Marc Zyngier Committed by chenxiang
Browse files

KVM: arm64: Don't trap ALLINT accesses if the vcpu has FEAT_NMI

virt inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I97WGU

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?h=arm64/nmi&id=3b21b676668016ee9d14be35511da16db581283f



-----------------------------------------------------------

This is counter-productive, so let it rip.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Signed-off-by: default avatarXiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: default avatarcaijian <caijian11@h-partners.com>
parent 395d99d8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -224,7 +224,8 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
		vcpu_set_flag(vcpu, PMUSERENR_ON_CPU);
	}

	if (cpus_have_final_cap(ARM64_HAS_NMI))
	if (cpus_have_final_cap(ARM64_HAS_NMI) &&
	    !kern_hyp_va(vcpu->kvm)->arch.pfr1_nmi)
		sysreg_clear_set_s(SYS_HCRX_EL2, 0, HCRX_EL2_TALLINT);

	vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2);
@@ -252,7 +253,8 @@ static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
{
	write_sysreg(vcpu->arch.mdcr_el2_host, mdcr_el2);

	if (cpus_have_final_cap(ARM64_HAS_NMI))
	if (cpus_have_final_cap(ARM64_HAS_NMI) &&
	    !kern_hyp_va(vcpu->kvm)->arch.pfr1_nmi)
		sysreg_clear_set_s(SYS_HCRX_EL2, HCRX_EL2_TALLINT, 0);

	write_sysreg(0, hstr_el2);