mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
KVM: arm64: Engage NV3 TLBI trap elision
Similarly to the ERET elision mechanism, FEAT_NV3 can elide TLBIs that only affects the guest's S1 translation. Enable this, with the express condition that the guest isn't NV2 aware, as we otherwise need to trap these TLBIs to deal with VNCR mappings. Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://patch.msgid.link/20260730071022.296811-26-maz@kernel.org Signed-off-by: Oliver Upton <oupton@kernel.org>
This commit is contained in:
parent
c962853bf5
commit
328ab9719e
|
|
@ -714,6 +714,19 @@ static inline void vcpu_set_hcrx(struct kvm_vcpu *vcpu)
|
|||
if (cpus_have_final_cap(ARM64_HAS_NV3) &&
|
||||
vcpu_has_nv(vcpu) && vcpu_el2_e2h_is_set(vcpu)) {
|
||||
vcpu->arch.hcrx_el2 |= HCRX_EL2_NVTGE;
|
||||
|
||||
/*
|
||||
* If the guest is NV2-capable, then we need to see
|
||||
* all the TLBIs, as configured in HCR_EL2.
|
||||
* Otherwise, relax the TLBI traps to only TGE=0.
|
||||
*/
|
||||
if (!kvm_has_nv2(vcpu->kvm)) {
|
||||
vcpu->arch.hcrx_el2 |= (HCRX_EL2_NVnTTLB |
|
||||
HCRX_EL2_NVnTTLBIS);
|
||||
|
||||
if (kvm_has_feat(kvm, ID_AA64ISAR0_EL1, TLB, OS))
|
||||
vcpu->arch.hcrx_el2 |= HCRX_EL2_NVnTTLBOS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user