diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2012-09-21 11:58:03 -0600 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-09-23 13:50:15 +0200 |
commit | 7a84428af7ca6a847f058c9ff244a18a2664fd1b (patch) | |
tree | e6c573c701736a75d618b670d66e98398b62769f /include/linux/kvm.h | |
parent | 1e08ec4a130e2745d96df169e67c58df98a07311 (diff) | |
download | linux-3.10-7a84428af7ca6a847f058c9ff244a18a2664fd1b.tar.gz linux-3.10-7a84428af7ca6a847f058c9ff244a18a2664fd1b.tar.bz2 linux-3.10-7a84428af7ca6a847f058c9ff244a18a2664fd1b.zip |
KVM: Add resampling irqfds for level triggered interrupts
To emulate level triggered interrupts, add a resample option to
KVM_IRQFD. When specified, a new resamplefd is provided that notifies
the user when the irqchip has been resampled by the VM. This may, for
instance, indicate an EOI. Also in this mode, posting of an interrupt
through an irqfd only asserts the interrupt. On resampling, the
interrupt is automatically de-asserted prior to user notification.
This enables level triggered interrupts to be posted and re-enabled
from vfio with no userspace intervention.
All resampling irqfds can make use of a single irq source ID, so we
reserve a new one for this interface.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'include/linux/kvm.h')
-rw-r--r-- | include/linux/kvm.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index d808694673f..0a6d6ba44c8 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h @@ -625,6 +625,7 @@ struct kvm_ppc_smmu_info { #ifdef __KVM_HAVE_READONLY_MEM #define KVM_CAP_READONLY_MEM 81 #endif +#define KVM_CAP_IRQFD_RESAMPLE 82 #ifdef KVM_CAP_IRQ_ROUTING @@ -690,12 +691,21 @@ struct kvm_xen_hvm_config { #endif #define KVM_IRQFD_FLAG_DEASSIGN (1 << 0) +/* + * Available with KVM_CAP_IRQFD_RESAMPLE + * + * KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies + * the irqfd to operate in resampling mode for level triggered interrupt + * emlation. See Documentation/virtual/kvm/api.txt. + */ +#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1) struct kvm_irqfd { __u32 fd; __u32 gsi; __u32 flags; - __u8 pad[20]; + __u32 resamplefd; + __u8 pad[16]; }; struct kvm_clock_data { |