@@ -157,6 +157,13 @@ static int acpi_register_gsi_xen(struct device *dev, u32 gsi,
157157struct xen_pci_frontend_ops * xen_pci_frontend ;
158158EXPORT_SYMBOL_GPL (xen_pci_frontend );
159159
160+ struct xen_msi_ops {
161+ int (* setup_msi_irqs )(struct pci_dev * dev , int nvec , int type );
162+ void (* teardown_msi_irqs )(struct pci_dev * dev );
163+ };
164+
165+ static struct xen_msi_ops xen_msi_ops __ro_after_init ;
166+
160167static int xen_setup_msi_irqs (struct pci_dev * dev , int nvec , int type )
161168{
162169 int irq , ret , i ;
@@ -415,7 +422,7 @@ static int xen_msi_domain_alloc_irqs(struct irq_domain *domain,
415422 else
416423 type = PCI_CAP_ID_MSI ;
417424
418- return x86_msi .setup_msi_irqs (to_pci_dev (dev ), nvec , type );
425+ return xen_msi_ops .setup_msi_irqs (to_pci_dev (dev ), nvec , type );
419426}
420427
421428static void xen_msi_domain_free_irqs (struct irq_domain * domain ,
@@ -424,7 +431,7 @@ static void xen_msi_domain_free_irqs(struct irq_domain *domain,
424431 if (WARN_ON_ONCE (!dev_is_pci (dev )))
425432 return ;
426433
427- x86_msi .teardown_msi_irqs (to_pci_dev (dev ));
434+ xen_msi_ops .teardown_msi_irqs (to_pci_dev (dev ));
428435}
429436
430437static struct msi_domain_ops xen_pci_msi_domain_ops = {
@@ -463,16 +470,16 @@ static __init void xen_setup_pci_msi(void)
463470{
464471 if (xen_pv_domain ()) {
465472 if (xen_initial_domain ()) {
466- x86_msi .setup_msi_irqs = xen_initdom_setup_msi_irqs ;
473+ xen_msi_ops .setup_msi_irqs = xen_initdom_setup_msi_irqs ;
467474 x86_msi .restore_msi_irqs = xen_initdom_restore_msi_irqs ;
468475 } else {
469- x86_msi .setup_msi_irqs = xen_setup_msi_irqs ;
476+ xen_msi_ops .setup_msi_irqs = xen_setup_msi_irqs ;
470477 }
471- x86_msi .teardown_msi_irqs = xen_pv_teardown_msi_irqs ;
478+ xen_msi_ops .teardown_msi_irqs = xen_pv_teardown_msi_irqs ;
472479 pci_msi_ignore_mask = 1 ;
473480 } else if (xen_hvm_domain ()) {
474- x86_msi .setup_msi_irqs = xen_hvm_setup_msi_irqs ;
475- x86_msi .teardown_msi_irqs = xen_teardown_msi_irqs ;
481+ xen_msi_ops .setup_msi_irqs = xen_hvm_setup_msi_irqs ;
482+ xen_msi_ops .teardown_msi_irqs = xen_teardown_msi_irqs ;
476483 } else {
477484 WARN_ON_ONCE (1 );
478485 return ;
0 commit comments