On 30/09/2016 23:31, Alex Bennée wrote:
>      tb = atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(pc)]);
> -    if (unlikely(!tb || tb->pc != pc || tb->cs_base != cs_base ||
> -                 tb->flags != flags)) {
> +    if (unlikely(!tb || atomic_read(&tb->pc) != pc || 
> atomic_read(&tb->cs_base) != cs_base ||
> +                 atomic_read(&tb->flags) != flags)) {

This should not be necessary (and is responsible for the 64-on-32
compilation failure).  The load of tb from the cache is an acquire
operation, and synchronizes with the corresponding store in
cpu->tb_jmp_cache.

Paolo

Reply via email to