cputlb: introduce tlb_flush_*_all_cpus[_synced]
commitc3b9a07a33de8015726b397270485c3998e7f86a
authorAlex Bennée <alex.bennee@linaro.org>
Thu, 23 Feb 2017 18:29:22 +0000 (23 18:29 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Fri, 24 Feb 2017 10:32:46 +0000 (24 10:32 +0000)
tree0184d74ee38a408e752583c1ea4ffb32f171e725
parentb0706b716769494f321a0d2bfd9fa9893992f995
cputlb: introduce tlb_flush_*_all_cpus[_synced]

This introduces support to the cputlb API for flushing all CPUs TLBs
with one call. This avoids the need for target helpers to iterate
through the vCPUs themselves.

An additional variant of the API (_synced) will cause the source vCPUs
work to be scheduled as "safe work". The result will be all the flush
operations will be complete by the time the originating vCPU executes
its safe work. The calling implementation can either end the TB
straight away (which will then pick up the cpu->exit_request on
entering the next block) or defer the exit until the architectural
sync point (usually a barrier instruction).

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
cputlb.c
include/exec/exec-all.h