|
@@ -651,6 +651,15 @@ static CPUPhysMemoryClient kvm_cpu_phys_memory_client = {
|
|
.log_stop = kvm_log_stop,
|
|
.log_stop = kvm_log_stop,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static void kvm_handle_interrupt(CPUState *env, int mask)
|
|
|
|
+{
|
|
|
|
+ env->interrupt_request |= mask;
|
|
|
|
+
|
|
|
|
+ if (!qemu_cpu_is_self(env)) {
|
|
|
|
+ qemu_cpu_kick(env);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
int kvm_init(void)
|
|
int kvm_init(void)
|
|
{
|
|
{
|
|
static const char upgrade_note[] =
|
|
static const char upgrade_note[] =
|
|
@@ -759,6 +768,8 @@ int kvm_init(void)
|
|
|
|
|
|
s->many_ioeventfds = kvm_check_many_ioeventfds();
|
|
s->many_ioeventfds = kvm_check_many_ioeventfds();
|
|
|
|
|
|
|
|
+ cpu_interrupt_handler = kvm_handle_interrupt;
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
err:
|
|
err:
|