On 2/5/19 3:18 PM, Peter Maydell wrote: > In commit f7b78602fdc6c6e4be we added the CPU cluster number to the > cflags field of the TB hash; this included adding it to the value > kept in tb->cflags, since we pass that field directly into the hash > calculation in some places. Unfortunately we forgot to check whether > other parts of the code were doing comparisons against tb->cflags > that would need to be updated. > > It turns out that there is exactly one such place: the > tb_lookup__cpu_state() function checks whether the TB it has > found in the tb_jmp_cache has a tb->cflags matching the cf_mask > that is passed in. The tb->cflags has the cluster_index in it > but the cf_mask does not. > > Hoist the "add cluster index to the cf_mask" code up from > tb_htable_lookup() to tb_lookup__cpu_state() so it can be considered > in the "did this TB match in the jmp cache" condition, as well as > when we do the full hash lookup by physical PC, flags, etc. > (tb_htable_lookup() is only called from tb_lookup__cpu_state(), > so this change doesn't require any further knock-on changes.) > > Fixes: f7b78602fdc6c6e4be ("accel/tcg: Add cluster number to TCG TB hash") > Reported-by: Howard Spoelstra <hsp.c...@gmail.com> > Reported-by: Cleber Rosa <cr...@redhat.com> > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > ---
Queued, thanks. r~