Messages in this thread Patch in this message | | | From | Feng Wu <> | Subject | [v5 15/19] KVM: eventfd: add irq bypass consumer management | Date | Mon, 13 Jul 2015 17:47:31 +0800 |
| |
From: Eric Auger <eric.auger@linaro.org>
This patch adds the registration/unregistration of an irq_bypass_consumer on irqfd assignment/deassignment.
Signed-off-by: Eric Auger <eric.auger@linaro.org> Signed-off-by: Feng Wu <feng.wu@intel.com> --- virt/kvm/eventfd.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 647ffb8..4225eea 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c @@ -35,6 +35,7 @@ #include <linux/srcu.h> #include <linux/slab.h> #include <linux/seqlock.h> +#include <linux/irqbypass.h> #include <trace/events/kvm.h> #include <kvm/iodev.h> @@ -140,6 +141,7 @@ irqfd_shutdown(struct work_struct *work) /* * It is now safe to release the object's resources */ + irq_bypass_unregister_consumer(&irqfd->consumer); eventfd_ctx_put(irqfd->eventfd); kfree(irqfd); } @@ -380,6 +382,11 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args) */ fdput(f); + irqfd->consumer.token = (void *)irqfd->eventfd; + kvm_arch_irq_consumer_init(&irqfd->consumer); + ret = irq_bypass_register_consumer(&irqfd->consumer); + WARN_ON(ret); + return 0; fail: -- 2.1.0
| |