From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] kvm-kmod: fix build on kernels with kvm trace set Date: Thu, 30 Apr 2009 14:52:08 +0300 Message-ID: <49F990E8.7000007@redhat.com> References: <20090428122226.GA6777@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, "Zhang, Xiantao" To: "Michael S. Tsirkin" Return-path: Received: from mx2.redhat.com ([66.187.237.31]:52426 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755510AbZD3LwK (ORCPT ); Thu, 30 Apr 2009 07:52:10 -0400 In-Reply-To: <20090428122226.GA6777@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Michael S. Tsirkin wrote: > CONFIG_KVM_TRACE in kernel conflicts with the definition > in external module. external-module-compat-comm.h tried > to work around this, but this didn't work as some > code still does #include > directly. > > Solve this differently by s/CONFIG_KVM_TRACE/CONFIG_KMOD_KVM_TRACE/ > in awk. Had to tighten regular expressions in hack-module.awk > so that they don't trigger on kvm_host.h . > > Signed-off-by: Michael S. Tsirkin > --- > Makefile | 5 +++-- > configure | 2 +- > external-module-compat-comm.h | 7 ------- > x86/Kbuild | 2 +- > x86/hack-module.awk | 8 +++++--- > 5 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/Makefile b/Makefile > index f2ef811..9cdc0af 100644 > --- a/Makefile > +++ b/Makefile > @@ -34,8 +34,8 @@ hack-files-ia64 = kvm_main.c kvm_fw.c kvm_lib.c kvm-ia64.c > > hack-files = $(hack-files-$(ARCH_DIR)) > > -ifeq ($(EXT_CONFIG_KVM_TRACE),y) > -module_defines += -DEXT_CONFIG_KVM_TRACE=y > +ifeq ($(CONFIG_KMOD_KVM_TRACE),y) > +module_defines += -DCONFIG_KMOD_KVM_TRACE=1 > endif > > all:: prerequisite > @@ -72,6 +72,7 @@ header-sync: > for i in $$(find $T -name '*.h'); do \ > $(call unifdef,$$i); done > $(call hack, include/linux/kvm.h) > + $(call hack, include/linux/kvm_host.h) > $(call hack, include/asm-$(ARCH_DIR)/kvm.h) > set -e && for i in $$(find $T -type f -printf '%P '); \ > do mkdir -p $$(dirname $$i); cmp -s $$i $T/$$i || cp $T/$$i $$i; done > diff --git a/configure b/configure > index 30af6e7..6e12bb1 100755 > --- a/configure > +++ b/configure > @@ -122,5 +122,5 @@ DEPMOD_VERSION=$depmod_version > EOF > > cat < config.kbuild > -EXT_CONFIG_KVM_TRACE=$kvm_trace > +CONFIG_KMOD_KVM_TRACE=$kvm_trace > EOF > diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h > index c955927..e561448 100644 > --- a/external-module-compat-comm.h > +++ b/external-module-compat-comm.h > @@ -18,13 +18,6 @@ > #include > #include > > -/* Override CONFIG_KVM_TRACE */ > -#ifdef EXT_CONFIG_KVM_TRACE > -# define CONFIG_KVM_TRACE 1 > -#else > -# undef CONFIG_KVM_TRACE > -#endif > - > /* > * 2.6.16 does not have GFP_NOWAIT > */ > diff --git a/x86/Kbuild b/x86/Kbuild > index d3aca00..fbdb28b 100644 > --- a/x86/Kbuild > +++ b/x86/Kbuild > @@ -7,7 +7,7 @@ kvm-objs := kvm_main.o x86.o mmu.o x86_emulate.o ../anon_inodes.o irq.o i8259.o > lapic.o ioapic.o preempt.o i8254.o coalesced_mmio.o irq_comm.o \ > timer.o \ > ../external-module-compat.o > -ifeq ($(EXT_CONFIG_KVM_TRACE),y) > +ifeq ($(CONFIG_KMOD_KVM_TRACE),y) > kvm-objs += kvm_trace.o > endif > ifeq ($(CONFIG_IOMMU_API),y) > diff --git a/x86/hack-module.awk b/x86/hack-module.awk > index 260eeef..f3d95be 100644 > --- a/x86/hack-module.awk > +++ b/x86/hack-module.awk > @@ -4,7 +4,7 @@ BEGIN { split("INIT_WORK desc_struct ldttss_desc64 desc_ptr " \ > "hrtimer_expires_remaining " \ > "on_each_cpu relay_open request_irq" , compat_apis); } > > -/^int kvm_init\(/ { anon_inodes = 1 } > +/^int kvm_init\([^)]*\)$/ { anon_inodes = 1 } > > /return 0;/ && anon_inodes { > print "\tr = kvm_init_anon_inodes();"; > @@ -17,7 +17,7 @@ BEGIN { split("INIT_WORK desc_struct ldttss_desc64 desc_ptr " \ > anon_inodes = 0 > } > > -/^void kvm_exit/ { anon_inodes_exit = 1 } > +/^void kvm_exit[^)]*\)$/ { anon_inodes_exit = 1 } > > /\}/ && anon_inodes_exit { > print "\tkvm_exit_anon_inodes();"; > @@ -25,7 +25,7 @@ BEGIN { split("INIT_WORK desc_struct ldttss_desc64 desc_ptr " \ > anon_inodes_exit = 0 > } > > -/^int kvm_arch_init/ { kvm_arch_init = 1 } > +/^int kvm_arch_init[^)])$/ { kvm_arch_init = 1 } > /\/ && kvm_arch_init { sub("\\", "kvm_tsc_khz") } > /^}/ { kvm_arch_init = 0 } > > @@ -85,6 +85,8 @@ BEGIN { split("INIT_WORK desc_struct ldttss_desc64 desc_ptr " \ > > /\kvm_.*_fops\.owner = module;/ { $0 = "IF_ANON_INODES_DOES_REFCOUNTS(" $0 ")" } > > +{ sub(/\/, "CONFIG_KMOD_KVM_TRACE") } > + > { print } > > /unsigned long flags;/ && vmx_load_host_state { > Xiantao, do we need to change this for ia64? -- error compiling committee.c: too many arguments to function