Raghavendra Rao Ananta 7657ea920c KVM: arm64: Use TLBI range-based instructions for unmap
The current implementation of the stage-2 unmap walker traverses
the given range and, as a part of break-before-make, performs
TLB invalidations with a DSB for every PTE. A multitude of this
combination could cause a performance bottleneck on some systems.

Hence, if the system supports FEAT_TLBIRANGE, defer the TLB
invalidations until the entire walk is finished, and then
use range-based instructions to invalidate the TLBs in one go.
Condition deferred TLB invalidation on the system supporting FWB,
as the optimization is entirely pointless when the unmap walker
needs to perform CMOs.

Rename stage2_put_pte() to stage2_unmap_put_pte() as the function
now serves the stage-2 unmap walker specifically, rather than
acting generic.

Signed-off-by: Raghavendra Rao Ananta <rananta@google.com>
Reviewed-by: Shaoqin Huang <shahuang@redhat.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230811045127.3308641-15-rananta@google.com
2023-08-17 09:40:35 +01:00
..
2023-06-28 20:35:21 -07:00
2023-07-06 10:06:04 -07:00
2023-07-06 10:06:04 -07:00
2023-07-01 21:12:32 -07:00
2023-06-28 20:35:21 -07:00
2023-07-22 10:46:30 -07:00
2023-07-06 10:06:04 -07:00
2023-07-06 10:06:04 -07:00
2023-06-29 16:34:12 -07:00
2023-06-29 16:34:12 -07:00
2023-07-12 16:28:53 -07:00
2023-07-22 10:46:30 -07:00
2023-07-23 10:44:38 -07:00
2023-07-13 13:34:00 -07:00