[Top][All Lists]

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

Re: [Qemu-devel] [RFC PATCH V6 18/18] translate-all: (wip) use tb_flush_

From: Frederic Konrad
Subject: Re: [Qemu-devel] [RFC PATCH V6 18/18] translate-all: (wip) use tb_flush_safe when we can't alloc more tb.
Date: Tue, 07 Jul 2015 18:23:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

On 07/07/2015 18:17, Alex Bennée wrote:
address@hidden writes:

From: KONRAD Frederic <address@hidden>

This changes just the tb_flush called from tb_alloc.

  * changes the other tb_flush.

Signed-off-by: KONRAD Frederic <address@hidden>
  translate-all.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/translate-all.c b/translate-all.c
index 8bd8fe8..9adaffa 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -1147,7 +1147,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
      tb = tb_alloc(pc);
      if (!tb) {
          /* flush must be done */
-        tb_flush(env);
+        tb_flush_safe(env);
Hold on this is async right? What stops us rolling on and then getting
flushed when the other vCPUs come to a halt?

It deserves a comment at least.

not this need some synchronization when the CPUs are halted.
There is crap here spotted by Paolo though.

In the case of tb_flush.. We do an async_safe_work because all VCPUs thread
must be outside cpu_exec.

Are you suggesting to just exiting everybody and wait here that all VCPUs exit? This is possible as well here but is not possible for the other case.. That's why I
prefered a "generic" mechanism.

          /* cannot fail at this point */
          tb = tb_alloc(pc);
          /* Don't forget to invalidate previous TB info.  */

reply via email to

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