On 12/07/2016 22:13, Sergey Fedorov wrote: > From: Sergey Fedorov <serge.f...@gmail.com> > > Hi, > > This is my respin of Alex's v2 series [1]. > > The first 8 patches are preparation for the patch 9, the subject matter > of this series, which enables lockless translation block lookup. The > main change here is that Paolo's suggestion is implemented: TBs are > marked with invalid CPU state early during invalidation. This allows to > make lockless lookup safe from races on 'tb_jmp_cache' and direct block > chaining.
Thanks for looking at the suggestion again and especially for perfecting it! > The patch 10 is a simple solution to avoid unnecessary bouncing on > 'tb_lock' between tb_gen_code() and tb_add_jump(). A local variable is > used to keep track of whether 'tb_lock' has already been taken. > > The last patch is my attempt to restructure tb_find_{fast,slow}() into a > single function tb_find(). I think it will be easier to follow the > locking scheme this way. However, I am afraid this last patch can be > controversial, so it can be simply dropped. Actually I agree entirely with it. If anything, for historical reasons one might rename tb_find_physical to tb_find_slow and leave the tb_find_fast name, but I think the patch is good as is. Have you measured performance with the series? In any case, it's nice to see MTTCG finally taking shape! Paolo