diff options
| author | Marc Zyngier <maz@kernel.org> | 2026-08-06 10:10:26 +0100 |
|---|---|---|
| committer | Oliver Upton <oupton@kernel.org> | 2026-08-08 11:10:57 -0700 |
| commit | 62e3bb894a6e926a26132bc4f558d80c2997d249 (patch) | |
| tree | 5f22d1d455922a3c489afbee10101b04d1826632 /include/linux/timerqueue.h | |
| parent | 2b7324f3a0c1072b9d578b8d42f199506753f26e (diff) | |
KVM: arm64: Add VNCR TLB tracking again
Having established that our VNCR TLB tracking was flawed and having
dropped it from KVM, it is time to replace it with something that
actually works in order to get some performance back, as the TLBI
overhead is otherwise pretty high.
The goal of such tracking is to hit the TLBI slow path if there are
any VNCR TLBs in the guest, irrespective of their mapping state.
For this purpose, we introduce an VM wide counter (vncr_tlb_count)
that tracks how many valid VNCR TLB are present. This means that
creating such TLB must increment the counter, and invalidation
decrement it, and both these operations must be done with the MMU lock
held for write.
On TLBI handling affecting EL2 S1, a non-zero counter forces the
handling to take the slow path to consider the VNCR TLBs. Note that
the bumping up is done "speculatively" in order to make sure that a
concurrent invalidation will be taken on the slow path.
Not exactly rocket science. Hopefully I got it right this time.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://patch.msgid.link/20260806091026.620700-9-maz@kernel.org
Signed-off-by: Oliver Upton <oupton@kernel.org>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions
