From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: [PATCH] move hlt exit to arch-specific code, and use upstream version. Date: Tue, 20 Oct 2009 21:47:44 +0200 Message-ID: <20091020194744.GG8278@redhat.com> References: <1256066132-13801-1-git-send-email-glommer@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, avi@redhat.com To: Glauber Costa Return-path: Received: from mx1.redhat.com ([209.132.183.28]:32808 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751364AbZJTTrl (ORCPT ); Tue, 20 Oct 2009 15:47:41 -0400 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n9KJlk69001398 for ; Tue, 20 Oct 2009 15:47:46 -0400 Content-Disposition: inline In-Reply-To: <1256066132-13801-1-git-send-email-glommer@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Tue, Oct 20, 2009 at 05:15:32PM -0200, Glauber Costa wrote: > HLT exit calls directly an arch-specific function. Furthermore, > upstream qemu already places it on arch specific code, so let's follow it. > > The function that handles halt itself is almost equal between them. So > let's use it. > kvm_handle_halt() may return 1. If it does kvm_arch_run() will return 1 too and kvm_run() will abort. > Signed-off-by: Glauber Costa > --- > qemu-kvm-x86.c | 14 +++----------- > qemu-kvm.c | 3 --- > target-i386/kvm.c | 2 ++ > 3 files changed, 5 insertions(+), 14 deletions(-) > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c > index c1d0ae9..6573dc5 100644 > --- a/qemu-kvm-x86.c > +++ b/qemu-kvm-x86.c > @@ -199,6 +199,9 @@ int kvm_arch_run(CPUState *env) > r = kvm_handle_tpr_access(env); > break; > #endif > + case KVM_EXIT_HLT: > + r = kvm_handle_halt(env); > + break; > default: > r = 1; > break; > @@ -1377,17 +1380,6 @@ int kvm_arch_init_vcpu(CPUState *cenv) > return 0; > } > > -int kvm_arch_halt(CPUState *env) > -{ > - > - if (!((env->interrupt_request & CPU_INTERRUPT_HARD) && > - (env->eflags & IF_MASK)) && > - !(env->interrupt_request & CPU_INTERRUPT_NMI)) { > - env->halted = 1; > - } > - return 1; > -} > - > void kvm_arch_pre_kvm_run(void *opaque, CPUState *env) > { > if (!kvm_irqchip_in_kernel()) > diff --git a/qemu-kvm.c b/qemu-kvm.c > index b8ae4d8..42ead38 100644 > --- a/qemu-kvm.c > +++ b/qemu-kvm.c > @@ -1002,9 +1002,6 @@ int kvm_run(CPUState *env) > case KVM_EXIT_MMIO: > r = handle_mmio(env); > break; > - case KVM_EXIT_HLT: > - r = kvm_arch_halt(env); > - break; > case KVM_EXIT_IRQ_WINDOW_OPEN: > break; > case KVM_EXIT_SHUTDOWN: > diff --git a/target-i386/kvm.c b/target-i386/kvm.c > index 1cf0dc3..de10ef1 100644 > --- a/target-i386/kvm.c > +++ b/target-i386/kvm.c > @@ -761,6 +761,7 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run) > > return 0; > } > +#endif > > static int kvm_handle_halt(CPUState *env) > { > @@ -775,6 +776,7 @@ static int kvm_handle_halt(CPUState *env) > return 1; > } > > +#ifdef KVM_UPSTREAM > int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run) > { > int ret = 0; > -- > 1.6.2.5 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Gleb.