diff options
author | Gregory Haskins <ghaskins@novell.com> | 2009-05-20 10:30:49 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-09-10 01:32:41 -0400 |
commit | 721eecbf4fe995ca94a9edec0c9843b1cc0eaaf3 (patch) | |
tree | c759fe98a4ea5e2e2a7694e4b44a558407077290 /arch/x86/kvm | |
parent | 0ba12d10817a8db1fd7d96d3283ec6c0b294aeab (diff) |
KVM: irqfd
KVM provides a complete virtual system environment for guests, including
support for injecting interrupts modeled after the real exception/interrupt
facilities present on the native platform (such as the IDT on x86).
Virtual interrupts can come from a variety of sources (emulated devices,
pass-through devices, etc) but all must be injected to the guest via
the KVM infrastructure. This patch adds a new mechanism to inject a specific
interrupt to a guest using a decoupled eventfd mechnanism: Any legal signal
on the irqfd (using eventfd semantics from either userspace or kernel) will
translate into an injected interrupt in the guest at the next available
interrupt window.
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r-- | arch/x86/kvm/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/kvm/Makefile | 2 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 1 |
3 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig index 939b1cb9c5b3..8cd2a4efe238 100644 --- a/arch/x86/kvm/Kconfig +++ b/arch/x86/kvm/Kconfig | |||
@@ -26,6 +26,7 @@ config KVM | |||
26 | select MMU_NOTIFIER | 26 | select MMU_NOTIFIER |
27 | select ANON_INODES | 27 | select ANON_INODES |
28 | select HAVE_KVM_IRQCHIP | 28 | select HAVE_KVM_IRQCHIP |
29 | select HAVE_KVM_EVENTFD | ||
29 | ---help--- | 30 | ---help--- |
30 | Support hosting fully virtualized guest machines using hardware | 31 | Support hosting fully virtualized guest machines using hardware |
31 | virtualization extensions. You will need a fairly recent | 32 | virtualization extensions. You will need a fairly recent |
diff --git a/arch/x86/kvm/Makefile b/arch/x86/kvm/Makefile index bee9512cd60d..01e3c61f749a 100644 --- a/arch/x86/kvm/Makefile +++ b/arch/x86/kvm/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | EXTRA_CFLAGS += -Ivirt/kvm -Iarch/x86/kvm | 2 | EXTRA_CFLAGS += -Ivirt/kvm -Iarch/x86/kvm |
3 | 3 | ||
4 | kvm-y += $(addprefix ../../../virt/kvm/, kvm_main.o ioapic.o \ | 4 | kvm-y += $(addprefix ../../../virt/kvm/, kvm_main.o ioapic.o \ |
5 | coalesced_mmio.o irq_comm.o) | 5 | coalesced_mmio.o irq_comm.o eventfd.o) |
6 | kvm-$(CONFIG_KVM_TRACE) += $(addprefix ../../../virt/kvm/, kvm_trace.o) | 6 | kvm-$(CONFIG_KVM_TRACE) += $(addprefix ../../../virt/kvm/, kvm_trace.o) |
7 | kvm-$(CONFIG_IOMMU_API) += $(addprefix ../../../virt/kvm/, iommu.o) | 7 | kvm-$(CONFIG_IOMMU_API) += $(addprefix ../../../virt/kvm/, iommu.o) |
8 | 8 | ||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f0642396783f..15f39fc08ece 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -1126,6 +1126,7 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
1126 | case KVM_CAP_REINJECT_CONTROL: | 1126 | case KVM_CAP_REINJECT_CONTROL: |
1127 | case KVM_CAP_IRQ_INJECT_STATUS: | 1127 | case KVM_CAP_IRQ_INJECT_STATUS: |
1128 | case KVM_CAP_ASSIGN_DEV_IRQ: | 1128 | case KVM_CAP_ASSIGN_DEV_IRQ: |
1129 | case KVM_CAP_IRQFD: | ||
1129 | r = 1; | 1130 | r = 1; |
1130 | break; | 1131 | break; |
1131 | case KVM_CAP_COALESCED_MMIO: | 1132 | case KVM_CAP_COALESCED_MMIO: |