[PATCH v2 25/28] KVM: arm64: Engage NV3 TLBI trap elision

Marc Zyngier maz at kernel.org
Wed Jul 15 00:33:26 PDT 2026


On Wed, 15 Jul 2026 01:16:44 +0100,
Wei-Lin Chang <weilin.chang at arm.com> wrote:
> 
> On Tue, Jul 14, 2026 at 10:16:38AM +0100, Marc Zyngier wrote:
> > 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 at kernel.org>
> > ---
> >  arch/arm64/include/asm/kvm_emulate.h | 13 +++++++++++++
> >  1 file changed, 13 insertions(+)
> > 
> > diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
> > index b32870a5e1236..d17b161d4ba3a 100644
> > --- a/arch/arm64/include/asm/kvm_emulate.h
> > +++ b/arch/arm64/include/asm/kvm_emulate.h
> > @@ -715,6 +715,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;;
> > +			}
> 
> I also suspected if this is dead code, but Sashiko had beat me to it :P
> So from your response in v1, is this code here just for completeness?

No, this is functional. It is just that we don't have any way to
expose to a nested guest something that would be in the outer
shareable domain, and not in the inner one.

> It's amusing that we're not able to take advantage of this feature at
> all!

We can. It is just that there is nothing out there that will exercise
it.

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list