qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 15/16] tcg: Make tb_flush() thread safe


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH 15/16] tcg: Make tb_flush() thread safe
Date: Sat, 24 Sep 2016 13:44:22 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0

On 09/24/2016 04:51 AM, Paolo Bonzini wrote:


----- Original Message -----
From: "Richard Henderson" <address@hidden>
To: "Paolo Bonzini" <address@hidden>, address@hidden
Cc: "serge fdrv" <address@hidden>, address@hidden, "alex bennee" <address@hidden>, 
"sergey fedorov"
<address@hidden>
Sent: Friday, September 23, 2016 8:06:09 PM
Subject: Re: [Qemu-devel] [PATCH 15/16] tcg: Make tb_flush() thread safe

On 09/23/2016 12:31 AM, Paolo Bonzini wrote:
+    unsigned tb_flush_req = (unsigned) (uintptr_t) data;

Extra cast?

-    tcg_ctx.tb_ctx.tb_flush_count++;
+    atomic_inc(&tcg_ctx.tb_ctx.tb_flush_count);

Since this is the only place this value is incremented, and we're under a
lock,
it should be cheaper to use

   atomic_mb_set(&tcg_ctx.tb_ctx.tb_flush_count, tb_flush_req + 1);

atomic_set will do even.  Though it's not really a fast path, which is
why I went for atomic_inc.

Don't we need the flush to be complete before the new count is seen? That's why I was suggesting the mb_set.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]