From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [PATCH 03/15] kvm: Install optimized interrupt handlers Date: Sat, 5 Mar 2011 12:37:59 -0300 Message-ID: <20110305153759.GA2692@amt.cnet> References: <29e857949ee4ff738c7c2f27063ee945a1af4875.1299233998.git.jan.kiszka@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Avi Kivity , kvm@vger.kernel.org, qemu-devel@nongnu.org To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:57237 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753269Ab1CERGs (ORCPT ); Sat, 5 Mar 2011 12:06:48 -0500 Content-Disposition: inline In-Reply-To: <29e857949ee4ff738c7c2f27063ee945a1af4875.1299233998.git.jan.kiszka@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: On Fri, Mar 04, 2011 at 11:20:00AM +0100, Jan Kiszka wrote: > KVM only requires to set the raised IRQ in CPUState and, if the user > space irqchip is used, to kick the receiving vcpu if it is remote. > > Signed-off-by: Jan Kiszka > --- > kvm-all.c | 17 +++++++++++++++++ > 1 files changed, 17 insertions(+), 0 deletions(-) > > diff --git a/kvm-all.c b/kvm-all.c > index 226843c..c460d45 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -650,6 +650,20 @@ 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 the env->interrupt_request request is processed in userspace, such as MCE, the kick is still necessary for irqchip case. CPU_INTERRUPT_DEBUG is another example, no? > + if (!qemu_cpu_self(env)) { > + qemu_cpu_kick(env); > + } > +} > + > +static void kvm_handle_interrupt_kernel_irqchip(CPUState *env, int mask) > +{ > + env->interrupt_request |= mask; > +} > +