Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a5bab10 authored by Alex Williamson's avatar Alex Williamson Committed by Gleb Natapov
Browse files

kvm: Allow build-time configuration of KVM device assignment



We hope to at some point deprecate KVM legacy device assignment in
favor of VFIO-based assignment.  Towards that end, allow legacy
device assignment to be deconfigured.

Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
Reviewed-by: default avatarAlexander Graf <agraf@suse.de>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
parent 064d1afa
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@
/* Select x86 specific features in <linux/kvm.h> */
#define __KVM_HAVE_IOAPIC
#define __KVM_HAVE_IRQ_LINE
#define __KVM_HAVE_DEVICE_ASSIGNMENT

/* Architectural interrupt line count. */
#define KVM_NR_INTERRUPTS 256
+11 −2
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@ config KVM
	tristate "Kernel-based Virtual Machine (KVM) support"
	depends on BROKEN
	depends on HAVE_KVM && MODULES
	# for device assignment:
	depends on PCI
	depends on BROKEN
	select PREEMPT_NOTIFIERS
	select ANON_INODES
@@ -51,6 +49,17 @@ config KVM_INTEL
	  Provides support for KVM on Itanium 2 processors equipped with the VT
	  extensions.

config KVM_DEVICE_ASSIGNMENT
	bool "KVM legacy PCI device assignment support"
	depends on KVM && PCI && IOMMU_API
	default y
	---help---
	  Provide support for legacy PCI device assignment through KVM.  The
	  kernel now also supports a full featured userspace device driver
	  framework through VFIO, which supersedes much of this support.

	  If unsure, say Y.

source drivers/vhost/Kconfig

endif # VIRTUALIZATION
+3 −3
Original line number Diff line number Diff line
@@ -49,10 +49,10 @@ ccflags-y := -Ivirt/kvm -Iarch/ia64/kvm/
asflags-y := -Ivirt/kvm -Iarch/ia64/kvm/

common-objs = $(addprefix ../../../virt/kvm/, kvm_main.o ioapic.o \
		coalesced_mmio.o irq_comm.o assigned-dev.o irqchip.o)
		coalesced_mmio.o irq_comm.o)

ifeq ($(CONFIG_IOMMU_API),y)
common-objs += $(addprefix ../../../virt/kvm/, iommu.o)
ifeq ($(CONFIG_KVM_DEVICE_ASSIGNMENT),y)
common-objs += $(addprefix ../../../virt/kvm/, assigned-dev.o iommu.o)
endif

kvm-objs := $(common-objs) kvm-ia64.o kvm_fw.o
+0 −2
Original line number Diff line number Diff line
@@ -1368,9 +1368,7 @@ void kvm_arch_sync_events(struct kvm *kvm)
void kvm_arch_destroy_vm(struct kvm *kvm)
{
	kvm_iommu_unmap_guest(kvm);
#ifdef  KVM_CAP_DEVICE_ASSIGNMENT
	kvm_free_all_assigned_devices(kvm);
#endif
	kfree(kvm->arch.vioapic);
	kvm_release_vm_pages(kvm);
}
+0 −1
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@
#define __KVM_HAVE_PIT
#define __KVM_HAVE_IOAPIC
#define __KVM_HAVE_IRQ_LINE
#define __KVM_HAVE_DEVICE_ASSIGNMENT
#define __KVM_HAVE_MSI
#define __KVM_HAVE_USER_NMI
#define __KVM_HAVE_GUEST_DEBUG
Loading