Avi Kivity wrote: > 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 <linux/autoconf.h> >> 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 <mst@xxxxxxxxxx> >> --- >> 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 <<EOF > 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 <linux/hrtimer.h> >> #include <asm/bitops.h> >> >> -/* 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 } >> /\<tsc_khz\>/ && kvm_arch_init { sub("\\<tsc_khz\\>", >> "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_KVM_TRACE\>/, "CONFIG_KMOD_KVM_TRACE") } + >> { print } >> >> /unsigned long flags;/ && vmx_load_host_state { >> > > Xiantao, do we need to change this for ia64? IA64 didn't support kvm trace, so doesn't need these changes , thanks! :) Xiantao-- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html