From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hollis Blanchard Subject: Re: [PATCH] KVM: Qemu: push_nmi should be only used by I386 Arch. Date: Mon, 01 Dec 2008 10:38:08 -0600 Message-ID: <1228149488.14874.15.camel@localhost.localdomain> References: <706158FABBBA044BAD4FE898A02E4BC219BCA9F5@pdsmsx503.ccr.corp.intel.com> <492E86FD.1040903@siemens.com> <706158FABBBA044BAD4FE898A02E4BC219BCAB6B@pdsmsx503.ccr.corp.intel.com> <492FB95C.4030702@siemens.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: "Zhang, Xiantao" , "kvm@vger.kernel.org" , "kvm-ia64@vger.kernel.org" , Jan Kiszka To: Avi Kivity Return-path: Received: from e5.ny.us.ibm.com ([32.97.182.145]:43124 "EHLO e5.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751183AbYLAQiM (ORCPT ); Mon, 1 Dec 2008 11:38:12 -0500 In-Reply-To: <492FB95C.4030702@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: On Fri, 2008-11-28 at 10:26 +0100, Jan Kiszka wrote: > Zhang, Xiantao wrote: > >>From c25fa2e4de40e500bd364c3267d5be89a9cfbb4d Mon Sep 17 00:00:00 2001 > > From: Xiantao Zhang > > Date: Fri, 28 Nov 2008 09:38:46 +0800 > > Subject: [PATCH] KVM: Qemu: push_nmi should be only used by I386 Arch. > > > > Use TARGET_I386 to exclude other archs. > > Signed-off-by: Xiantao Zhang > > --- > > libkvm/libkvm.c | 4 ++-- > > qemu/qemu-kvm.c | 4 ++++ > > 2 files changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c > > index 40c95ce..851a93a 100644 > > --- a/libkvm/libkvm.c > > +++ b/libkvm/libkvm.c > > @@ -868,7 +868,7 @@ int kvm_run(kvm_context_t kvm, int vcpu, void *env) > > struct kvm_run *run = kvm->run[vcpu]; > > > > again: > > -#ifdef KVM_CAP_NMI > > +#ifdef TARGET_I386 > > push_nmi(kvm); > > #endif > > #if !defined(__s390__) > > @@ -1032,7 +1032,7 @@ int kvm_has_sync_mmu(kvm_context_t kvm) > > > > int kvm_inject_nmi(kvm_context_t kvm, int vcpu) > > { > > -#ifdef KVM_CAP_NMI > > +#ifdef TARGET_I386 > > return ioctl(kvm->vcpu_fd[vcpu], KVM_NMI); > > #else > > return -ENOSYS; > > diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c > > index cf0e85d..b6c8288 100644 > > --- a/qemu/qemu-kvm.c > > +++ b/qemu/qemu-kvm.c > > @@ -154,10 +154,12 @@ static int try_push_interrupts(void *opaque) > > return kvm_arch_try_push_interrupts(opaque); > > } > > > > +#ifdef TARGET_I386 > > static void push_nmi(void *opaque) > > { > > kvm_arch_push_nmi(opaque); > > } > > +#endif > > > > static void post_kvm_run(void *opaque, void *data) > > { > > @@ -742,7 +744,9 @@ static struct kvm_callbacks qemu_kvm_ops = { > > .shutdown = kvm_shutdown, > > .io_window = kvm_io_window, > > .try_push_interrupts = try_push_interrupts, > > +#ifdef TARGET_I386 > > .push_nmi = push_nmi, > > +#endif > > .post_kvm_run = post_kvm_run, > > .pre_kvm_run = pre_kvm_run, > > #ifdef TARGET_I386 > > This will now break when KVM_CAP_NMI is undefined, ie. when there is no > KVM_NMI IOCTL (=> older kvm module sets). Guys, we already have stubs for this (although they've been turned into dead code). Jan broke IA64 and PowerPC builds when he renamed "kvm_arch_try_push_nmi" to "kvm_arch_push_nmi", and the obvious fix is to update the stubs to match. That avoids all these ifdefs and associated problems. Avi, could you revert a8d12f98755be9330fcde055134511f76ecaa538 please? -- Hollis Blanchard IBM Linux Technology Center