summaryrefslogtreecommitdiff
path: root/virt/lib/irqbypass.c
diff options
context:
space:
mode:
Diffstat (limited to 'virt/lib/irqbypass.c')
-rw-r--r--virt/lib/irqbypass.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c
index ea888b9203d26..62c160200be96 100644
--- a/virt/lib/irqbypass.c
+++ b/virt/lib/irqbypass.c
@@ -85,12 +85,13 @@ static void __disconnect(struct irq_bypass_producer *prod,
* irq_bypass_register_producer - register IRQ bypass producer
* @producer: pointer to producer structure
* @eventfd: pointer to the eventfd context associated with the producer
+ * @irq: Linux IRQ number of the underlying producer device
*
* Add the provided IRQ producer to the set of producers and connect with the
* consumer with a matching eventfd, if one exists.
*/
int irq_bypass_register_producer(struct irq_bypass_producer *producer,
- struct eventfd_ctx *eventfd)
+ struct eventfd_ctx *eventfd, int irq)
{
unsigned long index = (unsigned long)eventfd;
struct irq_bypass_consumer *consumer;
@@ -99,6 +100,8 @@ int irq_bypass_register_producer(struct irq_bypass_producer *producer,
if (WARN_ON_ONCE(producer->eventfd))
return -EINVAL;
+ producer->irq = irq;
+
guard(mutex)(&lock);
ret = xa_insert(&producers, index, producer, GFP_KERNEL);