[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 13/15] tcg: ensure cpu_tb_exec/tb_gen_code us
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v3 13/15] tcg: ensure cpu_tb_exec/tb_gen_code use atomic_read/write |
Date: |
Mon, 03 Oct 2016 10:48:02 +0100 |
User-agent: |
mu4e 0.9.17; emacs 25.1.50.3 |
Paolo Bonzini <address@hidden> writes:
> 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.
Is the C11 spec happy with "plain" accesses after the acquire operation?
Unfortunately the sanitizer isn't able to see the indirect acquires
effect on the other accesses.
>
> Paolo
--
Alex Bennée