On 24/03/16 14:31, Paolo Bonzini wrote: > On 24/03/2016 11:39, sergey.fedo...@linaro.org wrote: >> + /* FIXME: This test provides only some probablistic "thread safety" for >> + * user-mode emulation; appropriate synchronization/locking scheme >> should >> + * be implemented. >> + */ > There is appropriate locking. This code: > > if (next_tb != 0 && tb->page_addr[1] == -1 > && !qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) { > tb_add_jump((TranslationBlock *)(next_tb & ~TB_EXIT_MASK), > next_tb & TB_EXIT_MASK, tb); > } > > in cpu-exec.c runs under tb_lock. However, two threads can decide to > call tb_add_jump at the same time outside the lock, so we have to check > inside the lock whether someone has already done the work. > > What the comment means is that, in single-threaded scenarios (current > TCG and single-threaded user emulation), tb->jmp_list_next[n] is only > set once.
Right, thanks for clarifying this. So I'm going to put mention this in the comment, then. Kind regards, Sergey