On Mon, Apr 25, 2016 at 16:19:59 +0100, Alex Bennée wrote: > > Emilio G. Cota <c...@braap.org> writes: > > > [ Applies on top of bennee/mttcg/enable-mttcg-for-armv7-v1 after > > reverting "translate-all: introduces tb_flush_safe". A trivial > > conflict must be solved after applying. ] > > > > This is a first attempt at making tb_flush not have to stop all CPUs. > > There are issues as pointed out below, but this could be a good start. > > > > Context: > > https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg04658.html > > https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06942.html > > > > Changes from v1: > > - When a static buffer is used, split it in two instead of using > > a second buffer. > > > > Known issues: > > - Fails Alex' unit test with low enough -tb-size, see > > https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03465.html > > Seems to work in MTTCG, although I've only tested with tb_lock > > always being taken in tb_find_fast. > > With --enable-debug-tcg I get it failing pretty quickly: > > #4 0x00005555556d332a in tcg_global_alloc (s=0x555556007ba0 <tcg_ctx>) > at /home/alex/lsrc/qemu/qemu.git/tcg/tcg.c:463 > 463 tcg_debug_assert(s->nb_globals == s->nb_temps); > (gdb) p s->nb_globals > $1 = 24 > (gdb) p s->nb_temps > $2 = 31 > Seems odd though, the other threads are all waiting on the tb_lock.
It must be the tcg_prologue_init call, as Richard pointed out. I'm on it, will report back. Thanks, E.