aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/msi.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/x86/msi.c')
-rw-r--r--xen/arch/x86/msi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index a2ceea0001..d5192c2159 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -472,11 +472,18 @@ static struct msi_desc* alloc_msi_entry(void)
int setup_msi_irq(struct irq_desc *desc, struct msi_desc *msidesc)
{
+ return __setup_msi_irq(desc, msidesc,
+ msi_maskable_irq(msidesc) ? &pci_msi_maskable
+ : &pci_msi_nonmaskable);
+}
+
+int __setup_msi_irq(struct irq_desc *desc, struct msi_desc *msidesc,
+ hw_irq_controller *handler)
+{
struct msi_msg msg;
desc->msi_desc = msidesc;
- desc->handler = msi_maskable_irq(msidesc) ? &pci_msi_maskable
- : &pci_msi_nonmaskable;
+ desc->handler = handler;
msi_compose_msg(desc, &msg);
return write_msi_msg(msidesc, &msg);
}