xen: evtchn: Allow shared registration of IRQ handers
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 16 Oct 2023 07:11:26 +0000 (12:41 +0530)
committerJuergen Gross <jgross@suse.com>
Mon, 16 Oct 2023 13:18:33 +0000 (15:18 +0200)
commit9e90e58c11b74c2bddac4b2702cf79d36b981278
tree8c2224cb49854501b461a0ccd512a13a85fe100b
parent767e33ca47dd8ace7769e0b0c19d7b0c38b2f72d
xen: evtchn: Allow shared registration of IRQ handers

Currently the handling of events is supported either in the kernel or
userspace, but not both.

In order to support fast delivery of interrupts from the guest to the
backend, we need to handle the Queue notify part of Virtio protocol in
kernel and the rest in userspace.

Update the interrupt handler registration flag to IRQF_SHARED for event
channels, which would allow multiple entities to bind their interrupt
handler for the same event channel port.

Also increment the reference count of irq_info when multiple entities
try to bind event channel to irqchip, so the unbinding happens only
after all the users are gone.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/99b1edfd3147c6b5d22a5139dab5861e767dc34a.1697439990.git.viresh.kumar@linaro.org
Signed-off-by: Juergen Gross <jgross@suse.com>
drivers/xen/events/events_base.c
drivers/xen/evtchn.c