Thread (77 messages) 77 messages, 4 authors, 2021-11-29

Re: [PATCH v4 41/66] KVM: arm64: nv: Trap and emulate TLBI instructions from virtual EL2

From: Marc Zyngier <maz@kernel.org>
Date: 2021-11-29 18:14:29
Also in: kvm, kvmarm

Hi Chase,

Yes, it took that long for me to get back to the NV series. Sorry
about that.

On Wed, 14 Jul 2021 17:40:03 +0100,
Chase Conklin [off-list ref] wrote:
I'm noticing a hang while an L2 is booting. From what I can tell, the
L0 is issuing TLBIs to the wrong VMID, so the L2 is getting stuck
taking the same abort repeatedly.

It seems that kvm_unmap_stage2_range doesn't perform the invalidations
using the mmu passed to it here. Instead, it uses the passed mmu to
get back the kvm before passing that to stage2_apply_range which gets
its mmu from kvm->arch.mmu. This has the effect of applying
invalidations intended for the nested stage-2 of the L2 onto the
stage-2 for the L1.

It also turns out that for the L2, the mmu != mmu->pgt->mmu. This is
because pgt->mmu is always set to &kvm->arch.mmu by
kvm_pgtable_stage2_init_flags. This too will cause the VMID for the
TLBI to be incorrect because the stage2_unmap_walker gets its mmu from
the pgt passed to it.
Yup, and Ganapatrao noticed the same thing[1] (I obviously botched the
conversion to the new pgtable code). I *think* this is now fixed in my
nv-5.16 branch, but I'd really appreciate if you could have a look.

Bonus points if you have access to actual HW (even in emulation), as
doing this on the model is majorly frustrating.

Thanks,

	M.

[1] https://lore.kernel.org/r/20211122095803.28943-1-gankulkarni@os.amperecomputing.com (local)

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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help