From patchwork Fri Mar 18 12:19:16 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 643621 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p2ICJUrU010894 for ; Fri, 18 Mar 2011 12:19:30 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755609Ab1CRMT0 (ORCPT ); Fri, 18 Mar 2011 08:19:26 -0400 Received: from fmmailgate03.web.de ([217.72.192.234]:35388 "EHLO fmmailgate03.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754963Ab1CRMTX (ORCPT ); Fri, 18 Mar 2011 08:19:23 -0400 Received: from smtp06.web.de ( [172.20.5.172]) by fmmailgate03.web.de (Postfix) with ESMTP id 6232418A0DF08; Fri, 18 Mar 2011 13:19:22 +0100 (CET) Received: from [88.65.248.169] (helo=localhost.localdomain) by smtp06.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.110 #2) id 1Q0YeH-0001iA-01; Fri, 18 Mar 2011 13:19:21 +0100 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org Subject: [PATCH 3/3] kvm: Install specialized interrupt handler Date: Fri, 18 Mar 2011 13:19:16 +0100 Message-Id: <763de4212e9e2aef9276aaa14233eca8f1c12a9d.1300450747.git.jan.kiszka@web.de> X-Mailer: git-send-email 1.7.1 In-Reply-To: References: In-Reply-To: References: X-Sender: jan.kiszka@web.de X-Provags-ID: V01U2FsdGVkX18l9QNFcG0428B85tvoVFcQhpvxwoUrOrtf9W// nLca+CpK57OT2sFj0KoZfwMq77j6ZH4ed+9rCxRX9OQAIWzZFU GtZKlrBuI= Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 18 Mar 2011 12:19:30 +0000 (UTC) diff --git a/kvm-all.c b/kvm-all.c index 1d7e8ea..fd1fbfe 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -651,6 +651,15 @@ static CPUPhysMemoryClient kvm_cpu_phys_memory_client = { .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) { static const char upgrade_note[] = @@ -759,6 +768,8 @@ int kvm_init(void) s->many_ioeventfds = kvm_check_many_ioeventfds(); + cpu_interrupt_handler = kvm_handle_interrupt; + return 0; err: