]> git.proxmox.com Git - mirror_qemu.git/commit - cputlb.c
cputlb: introduce tlb_flush_* async work.
authorKONRAD Frederic <fred.konrad@greensocs.com>
Thu, 23 Feb 2017 18:29:18 +0000 (18:29 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Fri, 24 Feb 2017 10:32:46 +0000 (10:32 +0000)
commite3b9ca810980851f93f5719a7df2044c9435f003
tree599b323ab84d00be942903cbfebd37885966744e
parent857baec1d9e80947f0c1007c3a3d2331d62b4b53
cputlb: introduce tlb_flush_* async work.

Some architectures allow to flush the tlb of other VCPUs. This is not a problem
when we have only one thread for all VCPUs but it definitely needs to be an
asynchronous work when we are in true multithreaded work.

We take the tb_lock() when doing this to avoid racing with other threads
which may be invalidating TB's at the same time. The alternative would
be to use proper atomic primitives to clear the tlb entries en-mass.

This patch doesn't do anything to protect other cputlb function being
called in MTTCG mode making cross vCPU changes.

Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
[AJB: remove need for g_malloc on defer, make check fixes, tb_lock]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
cputlb.c
include/exec/exec-all.h
include/qom/cpu.h