qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v12 12/24] tcg: handle EXCP_ATOMIC exception for


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v12 12/24] tcg: handle EXCP_ATOMIC exception for system emulation
Date: Tue, 14 Feb 2017 06:19:10 +1100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0

On 02/13/2017 11:10 PM, Alex Bennée wrote:
@@ -239,9 +240,16 @@ static void cpu_exec_step(CPUState *cpu)
                      1 | CF_NOCACHE | CF_IGNORE_ICOUNT);
     tb->orig_tb = NULL;
     tb_unlock();
-    /* execute the generated code */
-    trace_exec_tb_nocache(tb, pc);
-    cpu_tb_exec(cpu, tb);
+
+    cc->cpu_exec_enter(cpu);
+
+    if (sigsetjmp(cpu->jmp_env, 0) == 0) {
+        /* execute the generated code */
+        trace_exec_tb_nocache(tb, pc);
+        cpu_tb_exec(cpu, tb);
+    }

I don't understand this, since cpu_tb_exec has its own sigsetjmp. Where is the exception supposed to come from that escapes?

+                } else if (r == EXCP_ATOMIC) {
+                    qemu_mutex_unlock_iothread();
+                    cpu_exec_step_atomic(cpu);
+                    qemu_mutex_lock_iothread();
...
+            case EXCP_ATOMIC:
+                qemu_mutex_unlock_iothread();
+                cpu_exec_step_atomic(cpu);
+                qemu_mutex_lock_iothread();


I just noticed this, but if you have to do a v13, it might be best to move these locks inside cpu_exec_step_atomic, as with tcg_cpu_exec. Otherwise leave it for later.


r~



reply via email to

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