[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 08/14] qemu: introduce qemu_cpu_kick
From: |
mtosatti |
Subject: |
[Qemu-devel] [patch 08/14] qemu: introduce qemu_cpu_kick |
Date: |
Wed, 22 Apr 2009 16:15:12 -0300 |
User-agent: |
quilt/0.46-1 |
To notify cpu of pending interrupt.
Signed-off-by: Marcelo Tosatti <address@hidden>
Index: trunk/exec.c
===================================================================
--- trunk.orig/exec.c
+++ trunk/exec.c
@@ -1541,6 +1541,17 @@ void cpu_interrupt(CPUState *env, int ma
old_mask = env->interrupt_request;
env->interrupt_request |= mask;
+#ifndef CONFIG_USER_ONLY
+ /*
+ * If called from iothread context, wake the target cpu in
+ * case its halted.
+ */
+ if (!qemu_cpu_self(env)) {
+ qemu_cpu_kick(env);
+ return;
+ }
+#endif
+
if (use_icount) {
env->icount_decr.u16.high = 0xffff;
#ifndef CONFIG_USER_ONLY
Index: trunk/qemu-common.h
===================================================================
--- trunk.orig/qemu-common.h
+++ trunk/qemu-common.h
@@ -189,6 +189,10 @@ void qemu_service_io(void);
/* Force QEMU to process pending events */
void qemu_notify_event(void);
+/* Unblock cpu */
+void qemu_cpu_kick(void *env);
+int qemu_cpu_self(void *env);
+
#ifdef CONFIG_USER_ONLY
#define qemu_init_vcpu(env) do { } while (0)
#else
Index: trunk/vl.c
===================================================================
--- trunk.orig/vl.c
+++ trunk/vl.c
@@ -3672,6 +3672,16 @@ void qemu_init_vcpu(void *_env)
return;
}
+int qemu_cpu_self(void *env)
+{
+ return 1;
+}
+
+void qemu_cpu_kick(void *env)
+{
+ return;
+}
+
#ifdef _WIN32
static void host_main_loop_wait(int *timeout)
{
--
- [Qemu-devel] Re: [patch 11/11] qemu: basic kvm iothread support, Anthony Liguori, 2009/04/17
- [Qemu-devel] [patch 00/14] qemu: introduce iothread (v4), mtosatti, 2009/04/22
- [Qemu-devel] [patch 11/14] qemu: use debug_requested global instead of cpu_exec return, mtosatti, 2009/04/22
- [Qemu-devel] [patch 05/14] qemu: factor out special event notification, mtosatti, 2009/04/22
- [Qemu-devel] [patch 08/14] qemu: introduce qemu_cpu_kick,
mtosatti <=
- [Qemu-devel] [patch 07/14] qemu: introduce qemu_init_vcpu, mtosatti, 2009/04/22
- [Qemu-devel] [patch 14/14] qemu: introduce iothread, mtosatti, 2009/04/22
- [Qemu-devel] [patch 13/14] qemu: handle stop request in main loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 04/14] qemu: explictly rearm alarm timer on main_loop_wait, mtosatti, 2009/04/22
- [Qemu-devel] [patch 12/14] qemu: refactor tcg cpu execution loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 09/14] qemu: introduce qemu_init_main_loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 06/14] qemu: refactor main_loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 10/14] qemu: introduce lock/unlock_iothread, mtosatti, 2009/04/22
- [Qemu-devel] [patch 01/14] qemu: create helper for event notification, mtosatti, 2009/04/22
- [Qemu-devel] [patch 03/14] qemu: per-arch cpu_has_work, mtosatti, 2009/04/22