diff mbox

qemu-kvm: configure script fixups after qemu-kvm reorg

Message ID 20090426073839.GA21634@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michael S. Tsirkin April 26, 2009, 7:38 a.m. UTC
Make kvm configure script and Makefile work again after things have been
moved around, so that you can do 'cd kvm && ./configure' to get a
kvm-enabled qemu.

Also, guard against infinite recursion in case of 'cd' commands failing.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

--

On Thu, Apr 23, 2009 at 06:40:00PM +0300, Avi Kivity wrote:
> After a lengthy testing phase, qemu-kvm.git has replaced  
> kvm-userspace.git as the source repository for kvm userspace development.

This patch makes cd kvm; ./configure work.
Is this the expected mode of operation?

--
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

Comments

Gleb Natapov April 26, 2009, 7:48 a.m. UTC | #1
On Sun, Apr 26, 2009 at 10:38:39AM +0300, Michael S. Tsirkin wrote:
> Make kvm configure script and Makefile work again after things have been
> moved around, so that you can do 'cd kvm && ./configure' to get a
> kvm-enabled qemu.
> 
> Also, guard against infinite recursion in case of 'cd' commands failing.
> 
I suppose changes under kvm/kernel/*  are not relevant to this goal. Also
for me running ./configure  --kerneldir=/path/to/kernel at top dir works.
(/path/to/kernel should be absolute though, otherwise kernel include path
is incorrect).


> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> --
> 
> On Thu, Apr 23, 2009 at 06:40:00PM +0300, Avi Kivity wrote:
> > After a lengthy testing phase, qemu-kvm.git has replaced  
> > kvm-userspace.git as the source repository for kvm userspace development.
> 
> This patch makes cd kvm; ./configure work.
> Is this the expected mode of operation?
> 
> diff --git a/kvm/Makefile b/kvm/Makefile
> index 617504c..1ef6493 100644
> --- a/kvm/Makefile
> +++ b/kvm/Makefile
> @@ -7,29 +7,29 @@ rpmrelease = devel
>  
>  sane-arch = $(subst i386,x86,$(subst x86_64,x86,$(subst s390x,s390,$(ARCH))))
>  
> -.PHONY: kernel user libkvm qemu bios vgabios extboot clean libfdt cscope
> +.PHONY: kernel user libkvm ${QEMU_DIR} bios vgabios extboot clean libfdt cscope
>  
> -all: libkvm qemu
> +all: libkvm ${QEMU_DIR}
>  ifneq '$(filter $(ARCH), x86_64 i386 ia64)' ''
>      all: $(if $(WANT_MODULE), kernel) user
>  endif
>  
>  kcmd = $(if $(WANT_MODULE),,@\#)
>  
> -qemu kernel user libkvm:
> +${QEMU_DIR} kernel user libkvm:
>  	$(MAKE) -C $@
>  
> -qemu: libkvm
> +${QEMU_DIR}: libkvm
>  ifneq '$(filter $(ARCH), i386 x86_64)' ''
> -    qemu: extboot
> +    ${QEMU_DIR}: extboot
>  endif
>  ifneq '$(filter $(ARCH), powerpc ia64)' ''
> -    qemu: libfdt
> +    ${QEMU_DIR}: libfdt
>  endif
>  user: libkvm
>  
>  # sync if kernel/Makefile exists and if using --with-patched-kernel
> -user libkvm qemu: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
> +user libkvm ${QEMU_DIR}: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
>  
>  header-sync-n:
>  
> @@ -42,18 +42,18 @@ header-sync-y:
>  
>  bios:
>  	$(MAKE) -C $@
> -	cp bios/BIOS-bochs-latest qemu/pc-bios/bios.bin
> +	cp bios/BIOS-bochs-latest ${QEMU_DIR}/pc-bios/bios.bin
>  
>  vgabios:
>  	$(MAKE) -C $@
> -	cp vgabios/VGABIOS-lgpl-latest.bin qemu/pc-bios/vgabios.bin
> -	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin qemu/pc-bios/vgabios-cirrus.bin
> +	cp vgabios/VGABIOS-lgpl-latest.bin ${QEMU_DIR}/pc-bios/vgabios.bin
> +	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin ${QEMU_DIR}/pc-bios/vgabios-cirrus.bin
>  
>  extboot:
>  	$(MAKE) -C $@
> -	if ! [ -f qemu/pc-bios/extboot.bin ] \
> -           || ! cmp -s qemu/pc-bios/extboot.bin extboot/extboot.bin; then \
> -		cp extboot/extboot.bin qemu/pc-bios/extboot.bin; \
> +	if ! [ -f ${QEMU_DIR}/pc-bios/extboot.bin ] \
> +           || ! cmp -s ${QEMU_DIR}/pc-bios/extboot.bin extboot/extboot.bin; then \
> +		cp extboot/extboot.bin ${QEMU_DIR}/pc-bios/extboot.bin; \
>  	fi
>  libfdt:
>  	$(MAKE) -C $@
> @@ -75,7 +75,7 @@ install-rpm:
>  	mkdir -p $(DESTDIR)/$(initdir)
>  	mkdir -p $(DESTDIR)/$(utilsdir)
>  	mkdir -p $(DESTDIR)/etc/udev/rules.d
> -	make -C qemu DESTDIR=$(DESTDIR)/ install
> +	make -C ${QEMU_DIR} DESTDIR=$(DESTDIR)/ install
>  	ln -sf /usr/kvm/bin/qemu-system-x86_64 $(DESTDIR)/$(bin)
>  	install -m 755 kvm_stat $(DESTDIR)/$(bindir)/kvm_stat
>  	cp scripts/kvm $(DESTDIR)/$(initdir)/kvm
> @@ -85,7 +85,7 @@ install-rpm:
>  install:
>  	$(kcmd)make -C kernel DESTDIR="$(DESTDIR)" install
>  	make -C libkvm DESTDIR="$(DESTDIR)" install
> -	make -C qemu DESTDIR="$(DESTDIR)" install
> +	make -C ${QEMU_DIR} DESTDIR="$(DESTDIR)" install
>  
>  tmpspec = .tmp.kvm.spec
>  RPMTOPDIR = $$(pwd)/rpmtop
> @@ -100,7 +100,7 @@ rpm:	srpm
>  srpm:
>  	mkdir -p $(RPMTOPDIR)/{SOURCES,SRPMS}
>  	sed 's/^Release:.*/Release: $(rpmrelease)/' kvm.spec > $(tmpspec)
> -	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz qemu
> +	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz ${QEMU_DIR}
>  	tar czf $(RPMTOPDIR)/SOURCES/user.tar.gz user
>  	tar czf $(RPMTOPDIR)/SOURCES/libkvm.tar.gz libkvm
>  	tar czf $(RPMTOPDIR)/SOURCES/kernel.tar.gz kernel
> @@ -111,7 +111,7 @@ srpm:
>  	$(RM) $(tmpspec)
>  
>  clean:
> -	for i in $(if $(WANT_MODULE), kernel) user libkvm qemu libfdt; do \
> +	for i in $(if $(WANT_MODULE), kernel) user libkvm ${QEMU_DIR} libfdt; do \
>  		make -C $$i clean; \
>  	done
>  	rm -f ./cscope.*
> diff --git a/kvm/configure b/kvm/configure
> index 249c743..f4873c1 100755
> --- a/kvm/configure
> +++ b/kvm/configure
> @@ -14,6 +14,7 @@ qemu_opts=()
>  cross_prefix=
>  arch=`uname -m`
>  target_exec=
> +qemu_directory=$PWD/..
>  # don't use uname if kerneldir is set
>  no_uname=
>  if [ -z "TMPDIR" ] ; then
> @@ -41,8 +42,7 @@ usage() {
>  	Any additional option is given to qemu's configure verbatim; including:
>  
>  EOF
> -    cd qemu
> -    ./configure --help | egrep "enable-|disable-" \
> +    cd $qemu_directory && ./configure --help | egrep "enable-|disable-" \
>  	| grep -v user | grep -v system | grep -v kqemu | grep -v kvm \
>  	| sed -e "s/^  /    /g" \
>  	| sed -e"s/  enable/enable/g" | sed -e "s/  disable/disable/g"
> @@ -117,7 +117,7 @@ processor=${arch#*-}
>  arch=${arch%%-*}
>  
>  #configure kernel module
> -[ -e kernel/Makefile ] && (cd kernel;
> +[ -e kernel/Makefile ] && (cd kernel &&
>      ./configure \
>  	--kerneldir="$kerneldir" \
>  	--arch="$arch" \
> @@ -127,15 +127,15 @@ arch=${arch%%-*}
>  )
>  
>  #configure user dir
> -(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
> +(cd user && ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
>            --arch="$arch" --processor="$processor" \
>            ${cross_prefix:+"--cross-prefix=$cross_prefix"})
>  
>  #configure qemu
> -(cd qemu; ./configure --target-list=$target_exec \
> +(cd $qemu_directory && ./configure --target-list=$target_exec \
>      --disable-kqemu \
> -    --extra-cflags="-I $PWD/../libkvm $qemu_cflags" \
> -    --extra-ldflags="-L $PWD/../libkvm $qemu_ldflags" \
> +    --extra-cflags="-I $PWD/libkvm $qemu_cflags" \
> +    --extra-ldflags="-L $PWD/libkvm $qemu_ldflags" \
>      --kerneldir="$libkvm_kerneldir" \
>      --prefix="$prefix" \
>      ${cross_prefix:+"--cross-prefix=$cross_prefix"} \
> @@ -144,6 +144,7 @@ arch=${arch%%-*}
>  
>  
>  cat <<EOF > config.mak
> +QEMU_DIR=$qemu_directory
>  ARCH=$arch
>  PROCESSOR=$processor
>  PREFIX=$prefix
> diff --git a/kvm/kernel/include/asm-x86/kvm.h b/kvm/kernel/include/asm-x86/kvm.h
> index dc90c47..8dfd630 100644
> --- a/kvm/kernel/include/asm-x86/kvm.h
> +++ b/kvm/kernel/include/asm-x86/kvm.h
> @@ -56,7 +56,6 @@
>  #define __KVM_HAVE_MSI
>  #define __KVM_HAVE_USER_NMI
>  #define __KVM_HAVE_GUEST_DEBUG
> -#define __KVM_HAVE_MSIX
>  
>  /* Architectural interrupt line count. */
>  #define KVM_NR_INTERRUPTS 256
> diff --git a/kvm/kernel/include/asm-x86/kvm_host.h b/kvm/kernel/include/asm-x86/kvm_host.h
> index 07e1058..aa87be7 100644
> --- a/kvm/kernel/include/asm-x86/kvm_host.h
> +++ b/kvm/kernel/include/asm-x86/kvm_host.h
> @@ -225,7 +225,6 @@ union kvm_mmu_page_role {
>  		unsigned access:3;
>  		unsigned invalid:1;
>  		unsigned cr4_pge:1;
> -		unsigned nxe:1;
>  	};
>  };
>  
> @@ -253,6 +252,7 @@ struct kvm_mmu_page {
>  	int multimapped;         /* More than one parent_pte? */
>  	int root_count;          /* Currently serving as active root */
>  	bool unsync;
> +	bool global;
>  	unsigned int unsync_children;
>  	union {
>  		u64 *parent_pte;               /* !multimapped */
> @@ -301,7 +301,6 @@ struct kvm_mmu {
>  	union kvm_mmu_page_role base_role;
>  
>  	u64 *pae_root;
> -	u64 rsvd_bits_mask[2][4];
>  };
>  
>  struct kvm_vcpu_arch {
> @@ -327,7 +326,6 @@ struct kvm_vcpu_arch {
>  	u64 shadow_efer;
>  	u64 apic_base;
>  	struct kvm_lapic *apic;    /* kernel irqchip context */
> -	int32_t apic_arb_prio;
>  	int mp_state;
>  	int sipi_vector;
>  	u64 ia32_misc_enable_msr;
> @@ -434,6 +432,7 @@ struct kvm_arch{
>  	 */
>  	struct list_head active_mmu_pages;
>  	struct list_head assigned_dev_head;
> +	struct list_head oos_global_pages;
>  	struct iommu_domain *iommu_domain;
>  	struct kvm_pic *vpic;
>  	struct kvm_ioapic *vioapic;
> @@ -441,6 +440,7 @@ struct kvm_arch{
>  	struct hlist_head irq_ack_notifier_list;
>  	int vapics_in_nmi_mode;
>  
> +	int round_robin_prev_vcpu;
>  	unsigned int tss_addr;
>  	struct page *apic_access_page;
>  
> @@ -463,6 +463,7 @@ struct kvm_vm_stat {
>  	u32 mmu_recycled;
>  	u32 mmu_cache_miss;
>  	u32 mmu_unsync;
> +	u32 mmu_unsync_global;
>  	u32 remote_tlb_flush;
>  	u32 lpages;
>  };
> @@ -560,7 +561,7 @@ struct kvm_x86_ops {
>  	void (*inject_pending_irq)(struct kvm_vcpu *vcpu);
>  	void (*inject_pending_vectors)(struct kvm_vcpu *vcpu,
>  				       struct kvm_run *run);
> -	int (*interrupt_allowed)(struct kvm_vcpu *vcpu);
> +
>  	int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
>  	int (*get_tdp_level)(void);
>  	int (*get_mt_mask_shift)(void);
> @@ -602,7 +603,6 @@ enum emulation_result {
>  
>  #define EMULTYPE_NO_DECODE	    (1 << 0)
>  #define EMULTYPE_TRAP_UD	    (1 << 1)
> -#define EMULTYPE_SKIP		    (1 << 2)
>  int emulate_instruction(struct kvm_vcpu *vcpu, struct kvm_run *run,
>  			unsigned long cr2, u16 error_code, int emulation_type);
>  void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context);
> @@ -678,6 +678,7 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
>  int kvm_mmu_load(struct kvm_vcpu *vcpu);
>  void kvm_mmu_unload(struct kvm_vcpu *vcpu);
>  void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
> +void kvm_mmu_sync_global(struct kvm_vcpu *vcpu);
>  
>  int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
>  
> @@ -830,6 +831,5 @@ asmlinkage void kvm_handle_fault_on_reboot(void);
>  #define KVM_ARCH_WANT_MMU_NOTIFIER
>  int kvm_unmap_hva(struct kvm *kvm, unsigned long hva);
>  int kvm_age_hva(struct kvm *kvm, unsigned long hva);
> -int cpuid_maxphyaddr(struct kvm_vcpu *vcpu);
>  
>  #endif /* _ASM_X86_KVM_HOST_H */
> diff --git a/kvm/kernel/include/asm-x86/svm.h b/kvm/kernel/include/asm-x86/svm.h
> index 5a34c94..ae5aa0d 100644
> --- a/kvm/kernel/include/asm-x86/svm.h
> +++ b/kvm/kernel/include/asm-x86/svm.h
> @@ -265,7 +265,6 @@ struct __attribute__ ((__packed__)) vmcb {
>  #define SVM_EVTINJ_VALID_ERR (1 << 11)
>  
>  #define SVM_EXITINTINFO_VEC_MASK SVM_EVTINJ_VEC_MASK
> -#define SVM_EXITINTINFO_TYPE_MASK SVM_EVTINJ_TYPE_MASK
>  
>  #define	SVM_EXITINTINFO_TYPE_INTR SVM_EVTINJ_TYPE_INTR
>  #define	SVM_EXITINTINFO_TYPE_NMI SVM_EVTINJ_TYPE_NMI
> diff --git a/kvm/kernel/include/linux/kvm.h b/kvm/kernel/include/linux/kvm.h
> index f5e9d66..0746631 100644
> --- a/kvm/kernel/include/linux/kvm.h
> +++ b/kvm/kernel/include/linux/kvm.h
> @@ -159,7 +159,7 @@ struct kvm_run {
>  			__u32 error_code;
>  		} ex;
>  		/* KVM_EXIT_IO */
> -		struct {
> +		struct kvm_io {
>  #define KVM_EXIT_IO_IN  0
>  #define KVM_EXIT_IO_OUT 1
>  			__u8 direction;
> @@ -264,10 +264,10 @@ struct kvm_interrupt {
>  /* for KVM_GET_DIRTY_LOG */
>  struct kvm_dirty_log {
>  	__u32 slot;
> -	__u32 padding1;
> +	__u32 padding;
>  	union {
>  		void   *dirty_bitmap; /* one bit per page */
> -		__u64 padding2;
> +		__u64 padding;
>  	};
>  };
>  
> @@ -449,12 +449,6 @@ struct kvm_trace_rec {
>  #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
>  #define KVM_CAP_DEVICE_DEASSIGNMENT 27
>  #endif
> -#ifdef __KVM_HAVE_MSIX
> -#define KVM_CAP_DEVICE_MSIX 28
> -#endif
> -#define KVM_CAP_ASSIGN_DEV_IRQ 29
> -/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */
> -#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
>  
>  #ifdef KVM_CAP_IRQ_ROUTING
>  
> @@ -526,18 +520,11 @@ struct kvm_irq_routing {
>  #define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \
>  				   struct kvm_assigned_pci_dev)
>  #define KVM_SET_GSI_ROUTING       _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
> -/* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */
>  #define KVM_ASSIGN_IRQ _IOR(KVMIO, 0x70, \
>  			    struct kvm_assigned_irq)
> -#define KVM_ASSIGN_DEV_IRQ        _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
>  #define KVM_REINJECT_CONTROL      _IO(KVMIO, 0x71)
>  #define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \
>  				     struct kvm_assigned_pci_dev)
> -#define KVM_ASSIGN_SET_MSIX_NR \
> -			_IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr)
> -#define KVM_ASSIGN_SET_MSIX_ENTRY \
> -			_IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry)
> -#define KVM_DEASSIGN_DEV_IRQ       _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
>  
>  /*
>   * ioctls for vcpu fds
> @@ -628,8 +615,6 @@ struct kvm_debug_guest {
>  #define KVM_TRC_STLB_INVAL       (KVM_TRC_HANDLER + 0x18)
>  #define KVM_TRC_PPC_INSTR        (KVM_TRC_HANDLER + 0x19)
>  
> -#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
> -
>  struct kvm_assigned_pci_dev {
>  	__u32 assigned_dev_id;
>  	__u32 busnr;
> @@ -640,17 +625,6 @@ struct kvm_assigned_pci_dev {
>  	};
>  };
>  
> -#define KVM_DEV_IRQ_HOST_INTX    (1 << 0)
> -#define KVM_DEV_IRQ_HOST_MSI     (1 << 1)
> -#define KVM_DEV_IRQ_HOST_MSIX    (1 << 2)
> -
> -#define KVM_DEV_IRQ_GUEST_INTX   (1 << 8)
> -#define KVM_DEV_IRQ_GUEST_MSI    (1 << 9)
> -#define KVM_DEV_IRQ_GUEST_MSIX   (1 << 10)
> -
> -#define KVM_DEV_IRQ_HOST_MASK	 0x00ff
> -#define KVM_DEV_IRQ_GUEST_MASK   0xff00
> -
>  struct kvm_assigned_irq {
>  	__u32 assigned_dev_id;
>  	__u32 host_irq;
> @@ -666,19 +640,9 @@ struct kvm_assigned_irq {
>  	};
>  };
>  
> +#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
>  
> -struct kvm_assigned_msix_nr {
> -	__u32 assigned_dev_id;
> -	__u16 entry_nr;
> -	__u16 padding;
> -};
> -
> -#define KVM_MAX_MSIX_PER_DEV		512
> -struct kvm_assigned_msix_entry {
> -	__u32 assigned_dev_id;
> -	__u32 gsi;
> -	__u16 entry; /* The index of entry in the MSI-X table */
> -	__u16 padding[3];
> -};
> +#define KVM_DEV_IRQ_ASSIGN_MSI_ACTION	KVM_DEV_IRQ_ASSIGN_ENABLE_MSI
> +#define KVM_DEV_IRQ_ASSIGN_ENABLE_MSI	(1 << 0)
>  
>  #endif
> diff --git a/kvm/kernel/include/linux/kvm_host.h b/kvm/kernel/include/linux/kvm_host.h
> index 0c3c5b1..965f186 100644
> --- a/kvm/kernel/include/linux/kvm_host.h
> +++ b/kvm/kernel/include/linux/kvm_host.h
> @@ -338,7 +338,6 @@ int kvm_arch_hardware_setup(void);
>  void kvm_arch_hardware_unsetup(void);
>  void kvm_arch_check_processor_compat(void *rtn);
>  int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
> -int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu);
>  
>  void kvm_free_physmem(struct kvm *kvm);
>  
> @@ -360,13 +359,6 @@ struct kvm_irq_ack_notifier {
>  	void (*irq_acked)(struct kvm_irq_ack_notifier *kian);
>  };
>  
> -#define KVM_ASSIGNED_MSIX_PENDING		0x1
> -struct kvm_guest_msix_entry {
> -	u32 vector;
> -	u16 entry;
> -	u16 flags;
> -};
> -
>  struct kvm_assigned_dev_kernel {
>  	struct kvm_irq_ack_notifier ack_notifier;
>  	struct work_struct interrupt_work;
> @@ -374,12 +366,13 @@ struct kvm_assigned_dev_kernel {
>  	int assigned_dev_id;
>  	int host_busnr;
>  	int host_devfn;
> -	unsigned int entries_nr;
>  	int host_irq;
>  	bool host_irq_disabled;
> -	struct msix_entry *host_msix_entries;
>  	int guest_irq;
> -	struct kvm_guest_msix_entry *guest_msix_entries;
> +#define KVM_ASSIGNED_DEV_GUEST_INTX	(1 << 0)
> +#define KVM_ASSIGNED_DEV_GUEST_MSI	(1 << 1)
> +#define KVM_ASSIGNED_DEV_HOST_INTX	(1 << 8)
> +#define KVM_ASSIGNED_DEV_HOST_MSI	(1 << 9)
>  	unsigned long irq_requested_type;
>  	int irq_source_id;
>  	int flags;
> @@ -399,11 +392,6 @@ void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq,
>  				      struct kvm_irq_mask_notifier *kimn);
>  void kvm_fire_mask_notifiers(struct kvm *kvm, int irq, bool mask);
>  
> -#ifdef __KVM_HAVE_IOAPIC
> -void kvm_get_intr_delivery_bitmask(struct kvm_ioapic *ioapic,
> -				   union kvm_ioapic_redirect_entry *entry,
> -				   unsigned long *deliver_bitmask);
> -#endif
>  int kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
>  void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin);
>  void kvm_register_irq_ack_notifier(struct kvm *kvm,
> diff --git a/kvm/kernel/include/linux/kvm_types.h b/kvm/kernel/include/linux/kvm_types.h
> index c65f89e..e204dd3 100644
> --- a/kvm/kernel/include/linux/kvm_types.h
> +++ b/kvm/kernel/include/linux/kvm_types.h
> @@ -80,31 +80,4 @@ typedef unsigned long  hfn_t;
>  
>  typedef hfn_t pfn_t;
>  
> -union kvm_ioapic_redirect_entry {
> -	u64 bits;
> -	struct {
> -		u8 vector;
> -		u8 delivery_mode:3;
> -		u8 dest_mode:1;
> -		u8 delivery_status:1;
> -		u8 polarity:1;
> -		u8 remote_irr:1;
> -		u8 trig_mode:1;
> -		u8 mask:1;
> -		u8 reserve:7;
> -		u8 reserved[4];
> -		u8 dest_id;
> -	} fields;
> -};
> -
> -struct kvm_lapic_irq {
> -	u32 vector;
> -	u32 delivery_mode;
> -	u32 dest_mode;
> -	u32 level;
> -	u32 trig_mode;
> -	u32 shorthand;
> -	u32 dest_id;
> -};
> -
>  #endif /* __KVM_TYPES_H__ */
> --
> 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.
--
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
Michael S. Tsirkin April 26, 2009, 8:15 a.m. UTC | #2
On Sun, Apr 26, 2009 at 10:48:20AM +0300, Gleb Natapov wrote:
> On Sun, Apr 26, 2009 at 10:38:39AM +0300, Michael S. Tsirkin wrote:
> > Make kvm configure script and Makefile work again after things have been
> > moved around, so that you can do 'cd kvm && ./configure' to get a
> > kvm-enabled qemu.
> > 
> > Also, guard against infinite recursion in case of 'cd' commands failing.
> > 
> I suppose changes under kvm/kernel/*  are not relevant to this goal.

I don't really understand how they got there.
Is configure script overwriting files under version control?

> Also
> for me running ./configure  --kerneldir=/path/to/kernel at top dir works.
> (/path/to/kernel should be absolute though, otherwise kernel include path
> is incorrect).

I'm using --with-patched-kernel which does not seem to be available
there.

> 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > 
> > --
> > 
> > On Thu, Apr 23, 2009 at 06:40:00PM +0300, Avi Kivity wrote:
> > > After a lengthy testing phase, qemu-kvm.git has replaced  
> > > kvm-userspace.git as the source repository for kvm userspace development.
> > 
> > This patch makes cd kvm; ./configure work.
> > Is this the expected mode of operation?
> > 
> > diff --git a/kvm/Makefile b/kvm/Makefile
> > index 617504c..1ef6493 100644
> > --- a/kvm/Makefile
> > +++ b/kvm/Makefile
> > @@ -7,29 +7,29 @@ rpmrelease = devel
> >  
> >  sane-arch = $(subst i386,x86,$(subst x86_64,x86,$(subst s390x,s390,$(ARCH))))
> >  
> > -.PHONY: kernel user libkvm qemu bios vgabios extboot clean libfdt cscope
> > +.PHONY: kernel user libkvm ${QEMU_DIR} bios vgabios extboot clean libfdt cscope
> >  
> > -all: libkvm qemu
> > +all: libkvm ${QEMU_DIR}
> >  ifneq '$(filter $(ARCH), x86_64 i386 ia64)' ''
> >      all: $(if $(WANT_MODULE), kernel) user
> >  endif
> >  
> >  kcmd = $(if $(WANT_MODULE),,@\#)
> >  
> > -qemu kernel user libkvm:
> > +${QEMU_DIR} kernel user libkvm:
> >  	$(MAKE) -C $@
> >  
> > -qemu: libkvm
> > +${QEMU_DIR}: libkvm
> >  ifneq '$(filter $(ARCH), i386 x86_64)' ''
> > -    qemu: extboot
> > +    ${QEMU_DIR}: extboot
> >  endif
> >  ifneq '$(filter $(ARCH), powerpc ia64)' ''
> > -    qemu: libfdt
> > +    ${QEMU_DIR}: libfdt
> >  endif
> >  user: libkvm
> >  
> >  # sync if kernel/Makefile exists and if using --with-patched-kernel
> > -user libkvm qemu: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
> > +user libkvm ${QEMU_DIR}: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
> >  
> >  header-sync-n:
> >  
> > @@ -42,18 +42,18 @@ header-sync-y:
> >  
> >  bios:
> >  	$(MAKE) -C $@
> > -	cp bios/BIOS-bochs-latest qemu/pc-bios/bios.bin
> > +	cp bios/BIOS-bochs-latest ${QEMU_DIR}/pc-bios/bios.bin
> >  
> >  vgabios:
> >  	$(MAKE) -C $@
> > -	cp vgabios/VGABIOS-lgpl-latest.bin qemu/pc-bios/vgabios.bin
> > -	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin qemu/pc-bios/vgabios-cirrus.bin
> > +	cp vgabios/VGABIOS-lgpl-latest.bin ${QEMU_DIR}/pc-bios/vgabios.bin
> > +	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin ${QEMU_DIR}/pc-bios/vgabios-cirrus.bin
> >  
> >  extboot:
> >  	$(MAKE) -C $@
> > -	if ! [ -f qemu/pc-bios/extboot.bin ] \
> > -           || ! cmp -s qemu/pc-bios/extboot.bin extboot/extboot.bin; then \
> > -		cp extboot/extboot.bin qemu/pc-bios/extboot.bin; \
> > +	if ! [ -f ${QEMU_DIR}/pc-bios/extboot.bin ] \
> > +           || ! cmp -s ${QEMU_DIR}/pc-bios/extboot.bin extboot/extboot.bin; then \
> > +		cp extboot/extboot.bin ${QEMU_DIR}/pc-bios/extboot.bin; \
> >  	fi
> >  libfdt:
> >  	$(MAKE) -C $@
> > @@ -75,7 +75,7 @@ install-rpm:
> >  	mkdir -p $(DESTDIR)/$(initdir)
> >  	mkdir -p $(DESTDIR)/$(utilsdir)
> >  	mkdir -p $(DESTDIR)/etc/udev/rules.d
> > -	make -C qemu DESTDIR=$(DESTDIR)/ install
> > +	make -C ${QEMU_DIR} DESTDIR=$(DESTDIR)/ install
> >  	ln -sf /usr/kvm/bin/qemu-system-x86_64 $(DESTDIR)/$(bin)
> >  	install -m 755 kvm_stat $(DESTDIR)/$(bindir)/kvm_stat
> >  	cp scripts/kvm $(DESTDIR)/$(initdir)/kvm
> > @@ -85,7 +85,7 @@ install-rpm:
> >  install:
> >  	$(kcmd)make -C kernel DESTDIR="$(DESTDIR)" install
> >  	make -C libkvm DESTDIR="$(DESTDIR)" install
> > -	make -C qemu DESTDIR="$(DESTDIR)" install
> > +	make -C ${QEMU_DIR} DESTDIR="$(DESTDIR)" install
> >  
> >  tmpspec = .tmp.kvm.spec
> >  RPMTOPDIR = $$(pwd)/rpmtop
> > @@ -100,7 +100,7 @@ rpm:	srpm
> >  srpm:
> >  	mkdir -p $(RPMTOPDIR)/{SOURCES,SRPMS}
> >  	sed 's/^Release:.*/Release: $(rpmrelease)/' kvm.spec > $(tmpspec)
> > -	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz qemu
> > +	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz ${QEMU_DIR}
> >  	tar czf $(RPMTOPDIR)/SOURCES/user.tar.gz user
> >  	tar czf $(RPMTOPDIR)/SOURCES/libkvm.tar.gz libkvm
> >  	tar czf $(RPMTOPDIR)/SOURCES/kernel.tar.gz kernel
> > @@ -111,7 +111,7 @@ srpm:
> >  	$(RM) $(tmpspec)
> >  
> >  clean:
> > -	for i in $(if $(WANT_MODULE), kernel) user libkvm qemu libfdt; do \
> > +	for i in $(if $(WANT_MODULE), kernel) user libkvm ${QEMU_DIR} libfdt; do \
> >  		make -C $$i clean; \
> >  	done
> >  	rm -f ./cscope.*
> > diff --git a/kvm/configure b/kvm/configure
> > index 249c743..f4873c1 100755
> > --- a/kvm/configure
> > +++ b/kvm/configure
> > @@ -14,6 +14,7 @@ qemu_opts=()
> >  cross_prefix=
> >  arch=`uname -m`
> >  target_exec=
> > +qemu_directory=$PWD/..
> >  # don't use uname if kerneldir is set
> >  no_uname=
> >  if [ -z "TMPDIR" ] ; then
> > @@ -41,8 +42,7 @@ usage() {
> >  	Any additional option is given to qemu's configure verbatim; including:
> >  
> >  EOF
> > -    cd qemu
> > -    ./configure --help | egrep "enable-|disable-" \
> > +    cd $qemu_directory && ./configure --help | egrep "enable-|disable-" \
> >  	| grep -v user | grep -v system | grep -v kqemu | grep -v kvm \
> >  	| sed -e "s/^  /    /g" \
> >  	| sed -e"s/  enable/enable/g" | sed -e "s/  disable/disable/g"
> > @@ -117,7 +117,7 @@ processor=${arch#*-}
> >  arch=${arch%%-*}
> >  
> >  #configure kernel module
> > -[ -e kernel/Makefile ] && (cd kernel;
> > +[ -e kernel/Makefile ] && (cd kernel &&
> >      ./configure \
> >  	--kerneldir="$kerneldir" \
> >  	--arch="$arch" \
> > @@ -127,15 +127,15 @@ arch=${arch%%-*}
> >  )
> >  
> >  #configure user dir
> > -(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
> > +(cd user && ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
> >            --arch="$arch" --processor="$processor" \
> >            ${cross_prefix:+"--cross-prefix=$cross_prefix"})
> >  
> >  #configure qemu
> > -(cd qemu; ./configure --target-list=$target_exec \
> > +(cd $qemu_directory && ./configure --target-list=$target_exec \
> >      --disable-kqemu \
> > -    --extra-cflags="-I $PWD/../libkvm $qemu_cflags" \
> > -    --extra-ldflags="-L $PWD/../libkvm $qemu_ldflags" \
> > +    --extra-cflags="-I $PWD/libkvm $qemu_cflags" \
> > +    --extra-ldflags="-L $PWD/libkvm $qemu_ldflags" \
> >      --kerneldir="$libkvm_kerneldir" \
> >      --prefix="$prefix" \
> >      ${cross_prefix:+"--cross-prefix=$cross_prefix"} \
> > @@ -144,6 +144,7 @@ arch=${arch%%-*}
> >  
> >  
> >  cat <<EOF > config.mak
> > +QEMU_DIR=$qemu_directory
> >  ARCH=$arch
> >  PROCESSOR=$processor
> >  PREFIX=$prefix
> > diff --git a/kvm/kernel/include/asm-x86/kvm.h b/kvm/kernel/include/asm-x86/kvm.h
> > index dc90c47..8dfd630 100644
> > --- a/kvm/kernel/include/asm-x86/kvm.h
> > +++ b/kvm/kernel/include/asm-x86/kvm.h
> > @@ -56,7 +56,6 @@
> >  #define __KVM_HAVE_MSI
> >  #define __KVM_HAVE_USER_NMI
> >  #define __KVM_HAVE_GUEST_DEBUG
> > -#define __KVM_HAVE_MSIX
> >  
> >  /* Architectural interrupt line count. */
> >  #define KVM_NR_INTERRUPTS 256
> > diff --git a/kvm/kernel/include/asm-x86/kvm_host.h b/kvm/kernel/include/asm-x86/kvm_host.h
> > index 07e1058..aa87be7 100644
> > --- a/kvm/kernel/include/asm-x86/kvm_host.h
> > +++ b/kvm/kernel/include/asm-x86/kvm_host.h
> > @@ -225,7 +225,6 @@ union kvm_mmu_page_role {
> >  		unsigned access:3;
> >  		unsigned invalid:1;
> >  		unsigned cr4_pge:1;
> > -		unsigned nxe:1;
> >  	};
> >  };
> >  
> > @@ -253,6 +252,7 @@ struct kvm_mmu_page {
> >  	int multimapped;         /* More than one parent_pte? */
> >  	int root_count;          /* Currently serving as active root */
> >  	bool unsync;
> > +	bool global;
> >  	unsigned int unsync_children;
> >  	union {
> >  		u64 *parent_pte;               /* !multimapped */
> > @@ -301,7 +301,6 @@ struct kvm_mmu {
> >  	union kvm_mmu_page_role base_role;
> >  
> >  	u64 *pae_root;
> > -	u64 rsvd_bits_mask[2][4];
> >  };
> >  
> >  struct kvm_vcpu_arch {
> > @@ -327,7 +326,6 @@ struct kvm_vcpu_arch {
> >  	u64 shadow_efer;
> >  	u64 apic_base;
> >  	struct kvm_lapic *apic;    /* kernel irqchip context */
> > -	int32_t apic_arb_prio;
> >  	int mp_state;
> >  	int sipi_vector;
> >  	u64 ia32_misc_enable_msr;
> > @@ -434,6 +432,7 @@ struct kvm_arch{
> >  	 */
> >  	struct list_head active_mmu_pages;
> >  	struct list_head assigned_dev_head;
> > +	struct list_head oos_global_pages;
> >  	struct iommu_domain *iommu_domain;
> >  	struct kvm_pic *vpic;
> >  	struct kvm_ioapic *vioapic;
> > @@ -441,6 +440,7 @@ struct kvm_arch{
> >  	struct hlist_head irq_ack_notifier_list;
> >  	int vapics_in_nmi_mode;
> >  
> > +	int round_robin_prev_vcpu;
> >  	unsigned int tss_addr;
> >  	struct page *apic_access_page;
> >  
> > @@ -463,6 +463,7 @@ struct kvm_vm_stat {
> >  	u32 mmu_recycled;
> >  	u32 mmu_cache_miss;
> >  	u32 mmu_unsync;
> > +	u32 mmu_unsync_global;
> >  	u32 remote_tlb_flush;
> >  	u32 lpages;
> >  };
> > @@ -560,7 +561,7 @@ struct kvm_x86_ops {
> >  	void (*inject_pending_irq)(struct kvm_vcpu *vcpu);
> >  	void (*inject_pending_vectors)(struct kvm_vcpu *vcpu,
> >  				       struct kvm_run *run);
> > -	int (*interrupt_allowed)(struct kvm_vcpu *vcpu);
> > +
> >  	int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
> >  	int (*get_tdp_level)(void);
> >  	int (*get_mt_mask_shift)(void);
> > @@ -602,7 +603,6 @@ enum emulation_result {
> >  
> >  #define EMULTYPE_NO_DECODE	    (1 << 0)
> >  #define EMULTYPE_TRAP_UD	    (1 << 1)
> > -#define EMULTYPE_SKIP		    (1 << 2)
> >  int emulate_instruction(struct kvm_vcpu *vcpu, struct kvm_run *run,
> >  			unsigned long cr2, u16 error_code, int emulation_type);
> >  void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context);
> > @@ -678,6 +678,7 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
> >  int kvm_mmu_load(struct kvm_vcpu *vcpu);
> >  void kvm_mmu_unload(struct kvm_vcpu *vcpu);
> >  void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
> > +void kvm_mmu_sync_global(struct kvm_vcpu *vcpu);
> >  
> >  int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
> >  
> > @@ -830,6 +831,5 @@ asmlinkage void kvm_handle_fault_on_reboot(void);
> >  #define KVM_ARCH_WANT_MMU_NOTIFIER
> >  int kvm_unmap_hva(struct kvm *kvm, unsigned long hva);
> >  int kvm_age_hva(struct kvm *kvm, unsigned long hva);
> > -int cpuid_maxphyaddr(struct kvm_vcpu *vcpu);
> >  
> >  #endif /* _ASM_X86_KVM_HOST_H */
> > diff --git a/kvm/kernel/include/asm-x86/svm.h b/kvm/kernel/include/asm-x86/svm.h
> > index 5a34c94..ae5aa0d 100644
> > --- a/kvm/kernel/include/asm-x86/svm.h
> > +++ b/kvm/kernel/include/asm-x86/svm.h
> > @@ -265,7 +265,6 @@ struct __attribute__ ((__packed__)) vmcb {
> >  #define SVM_EVTINJ_VALID_ERR (1 << 11)
> >  
> >  #define SVM_EXITINTINFO_VEC_MASK SVM_EVTINJ_VEC_MASK
> > -#define SVM_EXITINTINFO_TYPE_MASK SVM_EVTINJ_TYPE_MASK
> >  
> >  #define	SVM_EXITINTINFO_TYPE_INTR SVM_EVTINJ_TYPE_INTR
> >  #define	SVM_EXITINTINFO_TYPE_NMI SVM_EVTINJ_TYPE_NMI
> > diff --git a/kvm/kernel/include/linux/kvm.h b/kvm/kernel/include/linux/kvm.h
> > index f5e9d66..0746631 100644
> > --- a/kvm/kernel/include/linux/kvm.h
> > +++ b/kvm/kernel/include/linux/kvm.h
> > @@ -159,7 +159,7 @@ struct kvm_run {
> >  			__u32 error_code;
> >  		} ex;
> >  		/* KVM_EXIT_IO */
> > -		struct {
> > +		struct kvm_io {
> >  #define KVM_EXIT_IO_IN  0
> >  #define KVM_EXIT_IO_OUT 1
> >  			__u8 direction;
> > @@ -264,10 +264,10 @@ struct kvm_interrupt {
> >  /* for KVM_GET_DIRTY_LOG */
> >  struct kvm_dirty_log {
> >  	__u32 slot;
> > -	__u32 padding1;
> > +	__u32 padding;
> >  	union {
> >  		void   *dirty_bitmap; /* one bit per page */
> > -		__u64 padding2;
> > +		__u64 padding;
> >  	};
> >  };
> >  
> > @@ -449,12 +449,6 @@ struct kvm_trace_rec {
> >  #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
> >  #define KVM_CAP_DEVICE_DEASSIGNMENT 27
> >  #endif
> > -#ifdef __KVM_HAVE_MSIX
> > -#define KVM_CAP_DEVICE_MSIX 28
> > -#endif
> > -#define KVM_CAP_ASSIGN_DEV_IRQ 29
> > -/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */
> > -#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
> >  
> >  #ifdef KVM_CAP_IRQ_ROUTING
> >  
> > @@ -526,18 +520,11 @@ struct kvm_irq_routing {
> >  #define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \
> >  				   struct kvm_assigned_pci_dev)
> >  #define KVM_SET_GSI_ROUTING       _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
> > -/* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */
> >  #define KVM_ASSIGN_IRQ _IOR(KVMIO, 0x70, \
> >  			    struct kvm_assigned_irq)
> > -#define KVM_ASSIGN_DEV_IRQ        _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
> >  #define KVM_REINJECT_CONTROL      _IO(KVMIO, 0x71)
> >  #define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \
> >  				     struct kvm_assigned_pci_dev)
> > -#define KVM_ASSIGN_SET_MSIX_NR \
> > -			_IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr)
> > -#define KVM_ASSIGN_SET_MSIX_ENTRY \
> > -			_IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry)
> > -#define KVM_DEASSIGN_DEV_IRQ       _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
> >  
> >  /*
> >   * ioctls for vcpu fds
> > @@ -628,8 +615,6 @@ struct kvm_debug_guest {
> >  #define KVM_TRC_STLB_INVAL       (KVM_TRC_HANDLER + 0x18)
> >  #define KVM_TRC_PPC_INSTR        (KVM_TRC_HANDLER + 0x19)
> >  
> > -#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
> > -
> >  struct kvm_assigned_pci_dev {
> >  	__u32 assigned_dev_id;
> >  	__u32 busnr;
> > @@ -640,17 +625,6 @@ struct kvm_assigned_pci_dev {
> >  	};
> >  };
> >  
> > -#define KVM_DEV_IRQ_HOST_INTX    (1 << 0)
> > -#define KVM_DEV_IRQ_HOST_MSI     (1 << 1)
> > -#define KVM_DEV_IRQ_HOST_MSIX    (1 << 2)
> > -
> > -#define KVM_DEV_IRQ_GUEST_INTX   (1 << 8)
> > -#define KVM_DEV_IRQ_GUEST_MSI    (1 << 9)
> > -#define KVM_DEV_IRQ_GUEST_MSIX   (1 << 10)
> > -
> > -#define KVM_DEV_IRQ_HOST_MASK	 0x00ff
> > -#define KVM_DEV_IRQ_GUEST_MASK   0xff00
> > -
> >  struct kvm_assigned_irq {
> >  	__u32 assigned_dev_id;
> >  	__u32 host_irq;
> > @@ -666,19 +640,9 @@ struct kvm_assigned_irq {
> >  	};
> >  };
> >  
> > +#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
> >  
> > -struct kvm_assigned_msix_nr {
> > -	__u32 assigned_dev_id;
> > -	__u16 entry_nr;
> > -	__u16 padding;
> > -};
> > -
> > -#define KVM_MAX_MSIX_PER_DEV		512
> > -struct kvm_assigned_msix_entry {
> > -	__u32 assigned_dev_id;
> > -	__u32 gsi;
> > -	__u16 entry; /* The index of entry in the MSI-X table */
> > -	__u16 padding[3];
> > -};
> > +#define KVM_DEV_IRQ_ASSIGN_MSI_ACTION	KVM_DEV_IRQ_ASSIGN_ENABLE_MSI
> > +#define KVM_DEV_IRQ_ASSIGN_ENABLE_MSI	(1 << 0)
> >  
> >  #endif
> > diff --git a/kvm/kernel/include/linux/kvm_host.h b/kvm/kernel/include/linux/kvm_host.h
> > index 0c3c5b1..965f186 100644
> > --- a/kvm/kernel/include/linux/kvm_host.h
> > +++ b/kvm/kernel/include/linux/kvm_host.h
> > @@ -338,7 +338,6 @@ int kvm_arch_hardware_setup(void);
> >  void kvm_arch_hardware_unsetup(void);
> >  void kvm_arch_check_processor_compat(void *rtn);
> >  int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
> > -int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu);
> >  
> >  void kvm_free_physmem(struct kvm *kvm);
> >  
> > @@ -360,13 +359,6 @@ struct kvm_irq_ack_notifier {
> >  	void (*irq_acked)(struct kvm_irq_ack_notifier *kian);
> >  };
> >  
> > -#define KVM_ASSIGNED_MSIX_PENDING		0x1
> > -struct kvm_guest_msix_entry {
> > -	u32 vector;
> > -	u16 entry;
> > -	u16 flags;
> > -};
> > -
> >  struct kvm_assigned_dev_kernel {
> >  	struct kvm_irq_ack_notifier ack_notifier;
> >  	struct work_struct interrupt_work;
> > @@ -374,12 +366,13 @@ struct kvm_assigned_dev_kernel {
> >  	int assigned_dev_id;
> >  	int host_busnr;
> >  	int host_devfn;
> > -	unsigned int entries_nr;
> >  	int host_irq;
> >  	bool host_irq_disabled;
> > -	struct msix_entry *host_msix_entries;
> >  	int guest_irq;
> > -	struct kvm_guest_msix_entry *guest_msix_entries;
> > +#define KVM_ASSIGNED_DEV_GUEST_INTX	(1 << 0)
> > +#define KVM_ASSIGNED_DEV_GUEST_MSI	(1 << 1)
> > +#define KVM_ASSIGNED_DEV_HOST_INTX	(1 << 8)
> > +#define KVM_ASSIGNED_DEV_HOST_MSI	(1 << 9)
> >  	unsigned long irq_requested_type;
> >  	int irq_source_id;
> >  	int flags;
> > @@ -399,11 +392,6 @@ void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq,
> >  				      struct kvm_irq_mask_notifier *kimn);
> >  void kvm_fire_mask_notifiers(struct kvm *kvm, int irq, bool mask);
> >  
> > -#ifdef __KVM_HAVE_IOAPIC
> > -void kvm_get_intr_delivery_bitmask(struct kvm_ioapic *ioapic,
> > -				   union kvm_ioapic_redirect_entry *entry,
> > -				   unsigned long *deliver_bitmask);
> > -#endif
> >  int kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
> >  void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin);
> >  void kvm_register_irq_ack_notifier(struct kvm *kvm,
> > diff --git a/kvm/kernel/include/linux/kvm_types.h b/kvm/kernel/include/linux/kvm_types.h
> > index c65f89e..e204dd3 100644
> > --- a/kvm/kernel/include/linux/kvm_types.h
> > +++ b/kvm/kernel/include/linux/kvm_types.h
> > @@ -80,31 +80,4 @@ typedef unsigned long  hfn_t;
> >  
> >  typedef hfn_t pfn_t;
> >  
> > -union kvm_ioapic_redirect_entry {
> > -	u64 bits;
> > -	struct {
> > -		u8 vector;
> > -		u8 delivery_mode:3;
> > -		u8 dest_mode:1;
> > -		u8 delivery_status:1;
> > -		u8 polarity:1;
> > -		u8 remote_irr:1;
> > -		u8 trig_mode:1;
> > -		u8 mask:1;
> > -		u8 reserve:7;
> > -		u8 reserved[4];
> > -		u8 dest_id;
> > -	} fields;
> > -};
> > -
> > -struct kvm_lapic_irq {
> > -	u32 vector;
> > -	u32 delivery_mode;
> > -	u32 dest_mode;
> > -	u32 level;
> > -	u32 trig_mode;
> > -	u32 shorthand;
> > -	u32 dest_id;
> > -};
> > -
> >  #endif /* __KVM_TYPES_H__ */
> > --
> > 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.
> --
> 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
--
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
Michael S. Tsirkin April 26, 2009, 8:51 a.m. UTC | #3
> Also
> for me running ./configure  --kerneldir=/path/to/kernel at top dir works.
> (/path/to/kernel should be absolute though, otherwise kernel include path
> is incorrect).

Ah, I didn't realise kvm/cofigure is obsolete.
--
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
diff mbox

Patch

diff --git a/kvm/Makefile b/kvm/Makefile
index 617504c..1ef6493 100644
--- a/kvm/Makefile
+++ b/kvm/Makefile
@@ -7,29 +7,29 @@  rpmrelease = devel
 
 sane-arch = $(subst i386,x86,$(subst x86_64,x86,$(subst s390x,s390,$(ARCH))))
 
-.PHONY: kernel user libkvm qemu bios vgabios extboot clean libfdt cscope
+.PHONY: kernel user libkvm ${QEMU_DIR} bios vgabios extboot clean libfdt cscope
 
-all: libkvm qemu
+all: libkvm ${QEMU_DIR}
 ifneq '$(filter $(ARCH), x86_64 i386 ia64)' ''
     all: $(if $(WANT_MODULE), kernel) user
 endif
 
 kcmd = $(if $(WANT_MODULE),,@\#)
 
-qemu kernel user libkvm:
+${QEMU_DIR} kernel user libkvm:
 	$(MAKE) -C $@
 
-qemu: libkvm
+${QEMU_DIR}: libkvm
 ifneq '$(filter $(ARCH), i386 x86_64)' ''
-    qemu: extboot
+    ${QEMU_DIR}: extboot
 endif
 ifneq '$(filter $(ARCH), powerpc ia64)' ''
-    qemu: libfdt
+    ${QEMU_DIR}: libfdt
 endif
 user: libkvm
 
 # sync if kernel/Makefile exists and if using --with-patched-kernel
-user libkvm qemu: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
+user libkvm ${QEMU_DIR}: header-sync-$(if $(wildcard kernel/Makefile),$(if $(WANT_MODULE),n,y),n)
 
 header-sync-n:
 
@@ -42,18 +42,18 @@  header-sync-y:
 
 bios:
 	$(MAKE) -C $@
-	cp bios/BIOS-bochs-latest qemu/pc-bios/bios.bin
+	cp bios/BIOS-bochs-latest ${QEMU_DIR}/pc-bios/bios.bin
 
 vgabios:
 	$(MAKE) -C $@
-	cp vgabios/VGABIOS-lgpl-latest.bin qemu/pc-bios/vgabios.bin
-	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin qemu/pc-bios/vgabios-cirrus.bin
+	cp vgabios/VGABIOS-lgpl-latest.bin ${QEMU_DIR}/pc-bios/vgabios.bin
+	cp vgabios/VGABIOS-lgpl-latest.cirrus.bin ${QEMU_DIR}/pc-bios/vgabios-cirrus.bin
 
 extboot:
 	$(MAKE) -C $@
-	if ! [ -f qemu/pc-bios/extboot.bin ] \
-           || ! cmp -s qemu/pc-bios/extboot.bin extboot/extboot.bin; then \
-		cp extboot/extboot.bin qemu/pc-bios/extboot.bin; \
+	if ! [ -f ${QEMU_DIR}/pc-bios/extboot.bin ] \
+           || ! cmp -s ${QEMU_DIR}/pc-bios/extboot.bin extboot/extboot.bin; then \
+		cp extboot/extboot.bin ${QEMU_DIR}/pc-bios/extboot.bin; \
 	fi
 libfdt:
 	$(MAKE) -C $@
@@ -75,7 +75,7 @@  install-rpm:
 	mkdir -p $(DESTDIR)/$(initdir)
 	mkdir -p $(DESTDIR)/$(utilsdir)
 	mkdir -p $(DESTDIR)/etc/udev/rules.d
-	make -C qemu DESTDIR=$(DESTDIR)/ install
+	make -C ${QEMU_DIR} DESTDIR=$(DESTDIR)/ install
 	ln -sf /usr/kvm/bin/qemu-system-x86_64 $(DESTDIR)/$(bin)
 	install -m 755 kvm_stat $(DESTDIR)/$(bindir)/kvm_stat
 	cp scripts/kvm $(DESTDIR)/$(initdir)/kvm
@@ -85,7 +85,7 @@  install-rpm:
 install:
 	$(kcmd)make -C kernel DESTDIR="$(DESTDIR)" install
 	make -C libkvm DESTDIR="$(DESTDIR)" install
-	make -C qemu DESTDIR="$(DESTDIR)" install
+	make -C ${QEMU_DIR} DESTDIR="$(DESTDIR)" install
 
 tmpspec = .tmp.kvm.spec
 RPMTOPDIR = $$(pwd)/rpmtop
@@ -100,7 +100,7 @@  rpm:	srpm
 srpm:
 	mkdir -p $(RPMTOPDIR)/{SOURCES,SRPMS}
 	sed 's/^Release:.*/Release: $(rpmrelease)/' kvm.spec > $(tmpspec)
-	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz qemu
+	tar czf $(RPMTOPDIR)/SOURCES/kvm.tar.gz ${QEMU_DIR}
 	tar czf $(RPMTOPDIR)/SOURCES/user.tar.gz user
 	tar czf $(RPMTOPDIR)/SOURCES/libkvm.tar.gz libkvm
 	tar czf $(RPMTOPDIR)/SOURCES/kernel.tar.gz kernel
@@ -111,7 +111,7 @@  srpm:
 	$(RM) $(tmpspec)
 
 clean:
-	for i in $(if $(WANT_MODULE), kernel) user libkvm qemu libfdt; do \
+	for i in $(if $(WANT_MODULE), kernel) user libkvm ${QEMU_DIR} libfdt; do \
 		make -C $$i clean; \
 	done
 	rm -f ./cscope.*
diff --git a/kvm/configure b/kvm/configure
index 249c743..f4873c1 100755
--- a/kvm/configure
+++ b/kvm/configure
@@ -14,6 +14,7 @@  qemu_opts=()
 cross_prefix=
 arch=`uname -m`
 target_exec=
+qemu_directory=$PWD/..
 # don't use uname if kerneldir is set
 no_uname=
 if [ -z "TMPDIR" ] ; then
@@ -41,8 +42,7 @@  usage() {
 	Any additional option is given to qemu's configure verbatim; including:
 
 EOF
-    cd qemu
-    ./configure --help | egrep "enable-|disable-" \
+    cd $qemu_directory && ./configure --help | egrep "enable-|disable-" \
 	| grep -v user | grep -v system | grep -v kqemu | grep -v kvm \
 	| sed -e "s/^  /    /g" \
 	| sed -e"s/  enable/enable/g" | sed -e "s/  disable/disable/g"
@@ -117,7 +117,7 @@  processor=${arch#*-}
 arch=${arch%%-*}
 
 #configure kernel module
-[ -e kernel/Makefile ] && (cd kernel;
+[ -e kernel/Makefile ] && (cd kernel &&
     ./configure \
 	--kerneldir="$kerneldir" \
 	--arch="$arch" \
@@ -127,15 +127,15 @@  arch=${arch%%-*}
 )
 
 #configure user dir
-(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
+(cd user && ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
           --arch="$arch" --processor="$processor" \
           ${cross_prefix:+"--cross-prefix=$cross_prefix"})
 
 #configure qemu
-(cd qemu; ./configure --target-list=$target_exec \
+(cd $qemu_directory && ./configure --target-list=$target_exec \
     --disable-kqemu \
-    --extra-cflags="-I $PWD/../libkvm $qemu_cflags" \
-    --extra-ldflags="-L $PWD/../libkvm $qemu_ldflags" \
+    --extra-cflags="-I $PWD/libkvm $qemu_cflags" \
+    --extra-ldflags="-L $PWD/libkvm $qemu_ldflags" \
     --kerneldir="$libkvm_kerneldir" \
     --prefix="$prefix" \
     ${cross_prefix:+"--cross-prefix=$cross_prefix"} \
@@ -144,6 +144,7 @@  arch=${arch%%-*}
 
 
 cat <<EOF > config.mak
+QEMU_DIR=$qemu_directory
 ARCH=$arch
 PROCESSOR=$processor
 PREFIX=$prefix
diff --git a/kvm/kernel/include/asm-x86/kvm.h b/kvm/kernel/include/asm-x86/kvm.h
index dc90c47..8dfd630 100644
--- a/kvm/kernel/include/asm-x86/kvm.h
+++ b/kvm/kernel/include/asm-x86/kvm.h
@@ -56,7 +56,6 @@ 
 #define __KVM_HAVE_MSI
 #define __KVM_HAVE_USER_NMI
 #define __KVM_HAVE_GUEST_DEBUG
-#define __KVM_HAVE_MSIX
 
 /* Architectural interrupt line count. */
 #define KVM_NR_INTERRUPTS 256
diff --git a/kvm/kernel/include/asm-x86/kvm_host.h b/kvm/kernel/include/asm-x86/kvm_host.h
index 07e1058..aa87be7 100644
--- a/kvm/kernel/include/asm-x86/kvm_host.h
+++ b/kvm/kernel/include/asm-x86/kvm_host.h
@@ -225,7 +225,6 @@  union kvm_mmu_page_role {
 		unsigned access:3;
 		unsigned invalid:1;
 		unsigned cr4_pge:1;
-		unsigned nxe:1;
 	};
 };
 
@@ -253,6 +252,7 @@  struct kvm_mmu_page {
 	int multimapped;         /* More than one parent_pte? */
 	int root_count;          /* Currently serving as active root */
 	bool unsync;
+	bool global;
 	unsigned int unsync_children;
 	union {
 		u64 *parent_pte;               /* !multimapped */
@@ -301,7 +301,6 @@  struct kvm_mmu {
 	union kvm_mmu_page_role base_role;
 
 	u64 *pae_root;
-	u64 rsvd_bits_mask[2][4];
 };
 
 struct kvm_vcpu_arch {
@@ -327,7 +326,6 @@  struct kvm_vcpu_arch {
 	u64 shadow_efer;
 	u64 apic_base;
 	struct kvm_lapic *apic;    /* kernel irqchip context */
-	int32_t apic_arb_prio;
 	int mp_state;
 	int sipi_vector;
 	u64 ia32_misc_enable_msr;
@@ -434,6 +432,7 @@  struct kvm_arch{
 	 */
 	struct list_head active_mmu_pages;
 	struct list_head assigned_dev_head;
+	struct list_head oos_global_pages;
 	struct iommu_domain *iommu_domain;
 	struct kvm_pic *vpic;
 	struct kvm_ioapic *vioapic;
@@ -441,6 +440,7 @@  struct kvm_arch{
 	struct hlist_head irq_ack_notifier_list;
 	int vapics_in_nmi_mode;
 
+	int round_robin_prev_vcpu;
 	unsigned int tss_addr;
 	struct page *apic_access_page;
 
@@ -463,6 +463,7 @@  struct kvm_vm_stat {
 	u32 mmu_recycled;
 	u32 mmu_cache_miss;
 	u32 mmu_unsync;
+	u32 mmu_unsync_global;
 	u32 remote_tlb_flush;
 	u32 lpages;
 };
@@ -560,7 +561,7 @@  struct kvm_x86_ops {
 	void (*inject_pending_irq)(struct kvm_vcpu *vcpu);
 	void (*inject_pending_vectors)(struct kvm_vcpu *vcpu,
 				       struct kvm_run *run);
-	int (*interrupt_allowed)(struct kvm_vcpu *vcpu);
+
 	int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
 	int (*get_tdp_level)(void);
 	int (*get_mt_mask_shift)(void);
@@ -602,7 +603,6 @@  enum emulation_result {
 
 #define EMULTYPE_NO_DECODE	    (1 << 0)
 #define EMULTYPE_TRAP_UD	    (1 << 1)
-#define EMULTYPE_SKIP		    (1 << 2)
 int emulate_instruction(struct kvm_vcpu *vcpu, struct kvm_run *run,
 			unsigned long cr2, u16 error_code, int emulation_type);
 void kvm_report_emulation_failure(struct kvm_vcpu *cvpu, const char *context);
@@ -678,6 +678,7 @@  void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
 int kvm_mmu_load(struct kvm_vcpu *vcpu);
 void kvm_mmu_unload(struct kvm_vcpu *vcpu);
 void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
+void kvm_mmu_sync_global(struct kvm_vcpu *vcpu);
 
 int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
 
@@ -830,6 +831,5 @@  asmlinkage void kvm_handle_fault_on_reboot(void);
 #define KVM_ARCH_WANT_MMU_NOTIFIER
 int kvm_unmap_hva(struct kvm *kvm, unsigned long hva);
 int kvm_age_hva(struct kvm *kvm, unsigned long hva);
-int cpuid_maxphyaddr(struct kvm_vcpu *vcpu);
 
 #endif /* _ASM_X86_KVM_HOST_H */
diff --git a/kvm/kernel/include/asm-x86/svm.h b/kvm/kernel/include/asm-x86/svm.h
index 5a34c94..ae5aa0d 100644
--- a/kvm/kernel/include/asm-x86/svm.h
+++ b/kvm/kernel/include/asm-x86/svm.h
@@ -265,7 +265,6 @@  struct __attribute__ ((__packed__)) vmcb {
 #define SVM_EVTINJ_VALID_ERR (1 << 11)
 
 #define SVM_EXITINTINFO_VEC_MASK SVM_EVTINJ_VEC_MASK
-#define SVM_EXITINTINFO_TYPE_MASK SVM_EVTINJ_TYPE_MASK
 
 #define	SVM_EXITINTINFO_TYPE_INTR SVM_EVTINJ_TYPE_INTR
 #define	SVM_EXITINTINFO_TYPE_NMI SVM_EVTINJ_TYPE_NMI
diff --git a/kvm/kernel/include/linux/kvm.h b/kvm/kernel/include/linux/kvm.h
index f5e9d66..0746631 100644
--- a/kvm/kernel/include/linux/kvm.h
+++ b/kvm/kernel/include/linux/kvm.h
@@ -159,7 +159,7 @@  struct kvm_run {
 			__u32 error_code;
 		} ex;
 		/* KVM_EXIT_IO */
-		struct {
+		struct kvm_io {
 #define KVM_EXIT_IO_IN  0
 #define KVM_EXIT_IO_OUT 1
 			__u8 direction;
@@ -264,10 +264,10 @@  struct kvm_interrupt {
 /* for KVM_GET_DIRTY_LOG */
 struct kvm_dirty_log {
 	__u32 slot;
-	__u32 padding1;
+	__u32 padding;
 	union {
 		void   *dirty_bitmap; /* one bit per page */
-		__u64 padding2;
+		__u64 padding;
 	};
 };
 
@@ -449,12 +449,6 @@  struct kvm_trace_rec {
 #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
 #define KVM_CAP_DEVICE_DEASSIGNMENT 27
 #endif
-#ifdef __KVM_HAVE_MSIX
-#define KVM_CAP_DEVICE_MSIX 28
-#endif
-#define KVM_CAP_ASSIGN_DEV_IRQ 29
-/* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */
-#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
@@ -526,18 +520,11 @@  struct kvm_irq_routing {
 #define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \
 				   struct kvm_assigned_pci_dev)
 #define KVM_SET_GSI_ROUTING       _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
-/* deprecated, replaced by KVM_ASSIGN_DEV_IRQ */
 #define KVM_ASSIGN_IRQ _IOR(KVMIO, 0x70, \
 			    struct kvm_assigned_irq)
-#define KVM_ASSIGN_DEV_IRQ        _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
 #define KVM_REINJECT_CONTROL      _IO(KVMIO, 0x71)
 #define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \
 				     struct kvm_assigned_pci_dev)
-#define KVM_ASSIGN_SET_MSIX_NR \
-			_IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr)
-#define KVM_ASSIGN_SET_MSIX_ENTRY \
-			_IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry)
-#define KVM_DEASSIGN_DEV_IRQ       _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
 
 /*
  * ioctls for vcpu fds
@@ -628,8 +615,6 @@  struct kvm_debug_guest {
 #define KVM_TRC_STLB_INVAL       (KVM_TRC_HANDLER + 0x18)
 #define KVM_TRC_PPC_INSTR        (KVM_TRC_HANDLER + 0x19)
 
-#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
-
 struct kvm_assigned_pci_dev {
 	__u32 assigned_dev_id;
 	__u32 busnr;
@@ -640,17 +625,6 @@  struct kvm_assigned_pci_dev {
 	};
 };
 
-#define KVM_DEV_IRQ_HOST_INTX    (1 << 0)
-#define KVM_DEV_IRQ_HOST_MSI     (1 << 1)
-#define KVM_DEV_IRQ_HOST_MSIX    (1 << 2)
-
-#define KVM_DEV_IRQ_GUEST_INTX   (1 << 8)
-#define KVM_DEV_IRQ_GUEST_MSI    (1 << 9)
-#define KVM_DEV_IRQ_GUEST_MSIX   (1 << 10)
-
-#define KVM_DEV_IRQ_HOST_MASK	 0x00ff
-#define KVM_DEV_IRQ_GUEST_MASK   0xff00
-
 struct kvm_assigned_irq {
 	__u32 assigned_dev_id;
 	__u32 host_irq;
@@ -666,19 +640,9 @@  struct kvm_assigned_irq {
 	};
 };
 
+#define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 
-struct kvm_assigned_msix_nr {
-	__u32 assigned_dev_id;
-	__u16 entry_nr;
-	__u16 padding;
-};
-
-#define KVM_MAX_MSIX_PER_DEV		512
-struct kvm_assigned_msix_entry {
-	__u32 assigned_dev_id;
-	__u32 gsi;
-	__u16 entry; /* The index of entry in the MSI-X table */
-	__u16 padding[3];
-};
+#define KVM_DEV_IRQ_ASSIGN_MSI_ACTION	KVM_DEV_IRQ_ASSIGN_ENABLE_MSI
+#define KVM_DEV_IRQ_ASSIGN_ENABLE_MSI	(1 << 0)
 
 #endif
diff --git a/kvm/kernel/include/linux/kvm_host.h b/kvm/kernel/include/linux/kvm_host.h
index 0c3c5b1..965f186 100644
--- a/kvm/kernel/include/linux/kvm_host.h
+++ b/kvm/kernel/include/linux/kvm_host.h
@@ -338,7 +338,6 @@  int kvm_arch_hardware_setup(void);
 void kvm_arch_hardware_unsetup(void);
 void kvm_arch_check_processor_compat(void *rtn);
 int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
-int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu);
 
 void kvm_free_physmem(struct kvm *kvm);
 
@@ -360,13 +359,6 @@  struct kvm_irq_ack_notifier {
 	void (*irq_acked)(struct kvm_irq_ack_notifier *kian);
 };
 
-#define KVM_ASSIGNED_MSIX_PENDING		0x1
-struct kvm_guest_msix_entry {
-	u32 vector;
-	u16 entry;
-	u16 flags;
-};
-
 struct kvm_assigned_dev_kernel {
 	struct kvm_irq_ack_notifier ack_notifier;
 	struct work_struct interrupt_work;
@@ -374,12 +366,13 @@  struct kvm_assigned_dev_kernel {
 	int assigned_dev_id;
 	int host_busnr;
 	int host_devfn;
-	unsigned int entries_nr;
 	int host_irq;
 	bool host_irq_disabled;
-	struct msix_entry *host_msix_entries;
 	int guest_irq;
-	struct kvm_guest_msix_entry *guest_msix_entries;
+#define KVM_ASSIGNED_DEV_GUEST_INTX	(1 << 0)
+#define KVM_ASSIGNED_DEV_GUEST_MSI	(1 << 1)
+#define KVM_ASSIGNED_DEV_HOST_INTX	(1 << 8)
+#define KVM_ASSIGNED_DEV_HOST_MSI	(1 << 9)
 	unsigned long irq_requested_type;
 	int irq_source_id;
 	int flags;
@@ -399,11 +392,6 @@  void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq,
 				      struct kvm_irq_mask_notifier *kimn);
 void kvm_fire_mask_notifiers(struct kvm *kvm, int irq, bool mask);
 
-#ifdef __KVM_HAVE_IOAPIC
-void kvm_get_intr_delivery_bitmask(struct kvm_ioapic *ioapic,
-				   union kvm_ioapic_redirect_entry *entry,
-				   unsigned long *deliver_bitmask);
-#endif
 int kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
 void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin);
 void kvm_register_irq_ack_notifier(struct kvm *kvm,
diff --git a/kvm/kernel/include/linux/kvm_types.h b/kvm/kernel/include/linux/kvm_types.h
index c65f89e..e204dd3 100644
--- a/kvm/kernel/include/linux/kvm_types.h
+++ b/kvm/kernel/include/linux/kvm_types.h
@@ -80,31 +80,4 @@  typedef unsigned long  hfn_t;
 
 typedef hfn_t pfn_t;
 
-union kvm_ioapic_redirect_entry {
-	u64 bits;
-	struct {
-		u8 vector;
-		u8 delivery_mode:3;
-		u8 dest_mode:1;
-		u8 delivery_status:1;
-		u8 polarity:1;
-		u8 remote_irr:1;
-		u8 trig_mode:1;
-		u8 mask:1;
-		u8 reserve:7;
-		u8 reserved[4];
-		u8 dest_id;
-	} fields;
-};
-
-struct kvm_lapic_irq {
-	u32 vector;
-	u32 delivery_mode;
-	u32 dest_mode;
-	u32 level;
-	u32 trig_mode;
-	u32 shorthand;
-	u32 dest_id;
-};
-
 #endif /* __KVM_TYPES_H__ */