Lines Matching refs:domain

185 			 (dev->msi.domain &&  in msi_ctrl_valid()
186 !dev->msi.data->__domains[ctrl->domid].domain))) in msi_ctrl_valid()
336 if (dev->msi.domain && !irq_domain_is_msi_parent(dev->msi.domain)) in msi_setup_device_data()
337 md->__domains[MSI_DEFAULT_DOMAIN].domain = dev->msi.domain; in msi_setup_device_data()
603 struct irq_domain *domain; in msi_get_device_domain() local
610 domain = dev->msi.data->__domains[domid].domain; in msi_get_device_domain()
611 if (!domain) in msi_get_device_domain()
614 if (WARN_ON_ONCE(irq_domain_is_msi_parent(domain))) in msi_get_device_domain()
617 return domain; in msi_get_device_domain()
623 struct irq_domain *domain; in msi_domain_get_hwsize() local
625 domain = msi_get_device_domain(dev, domid); in msi_domain_get_hwsize()
626 if (domain) { in msi_domain_get_hwsize()
627 info = domain->host_data; in msi_domain_get_hwsize()
640 static void msi_check_level(struct irq_domain *domain, struct msi_msg *msg) in msi_check_level() argument
642 struct msi_domain_info *info = domain->host_data; in msi_check_level()
674 msi_check_level(irq_data->domain, msg); in msi_domain_set_affinity()
681 static int msi_domain_activate(struct irq_domain *domain, in msi_domain_activate() argument
687 msi_check_level(irq_data->domain, msg); in msi_domain_activate()
692 static void msi_domain_deactivate(struct irq_domain *domain, in msi_domain_deactivate() argument
701 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() argument
704 struct msi_domain_info *info = domain->host_data; in msi_domain_alloc()
709 if (irq_find_mapping(domain, hwirq) > 0) in msi_domain_alloc()
712 if (domain->parent) { in msi_domain_alloc()
713 ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg); in msi_domain_alloc()
719 ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg); in msi_domain_alloc()
723 ops->msi_free(domain, info, virq + i); in msi_domain_alloc()
725 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_alloc()
733 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() argument
736 struct msi_domain_info *info = domain->host_data; in msi_domain_free()
741 info->ops->msi_free(domain, info, virq + i); in msi_domain_free()
743 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_free()
746 static int msi_domain_translate(struct irq_domain *domain, struct irq_fwspec *fwspec, in msi_domain_translate() argument
749 struct msi_domain_info *info = domain->host_data; in msi_domain_translate()
757 return info->ops->msi_translate(domain, fwspec, hwirq, type); in msi_domain_translate()
792 static int msi_domain_ops_prepare(struct irq_domain *domain, struct device *dev, in msi_domain_ops_prepare() argument
805 static int msi_domain_ops_init(struct irq_domain *domain, in msi_domain_ops_init() argument
810 irq_domain_set_hwirq_and_chip(domain, virq, hwirq, info->chip, in msi_domain_ops_init()
863 struct irq_domain *domain; in __msi_create_irq_domain() local
880 domain = irq_domain_create_hierarchy(parent, flags | IRQ_DOMAIN_FLAG_MSI, 0, in __msi_create_irq_domain()
883 if (domain) { in __msi_create_irq_domain()
884 irq_domain_update_bus_token(domain, info->bus_token); in __msi_create_irq_domain()
886 domain->pm_dev = parent->pm_dev; in __msi_create_irq_domain()
889 return domain; in __msi_create_irq_domain()
934 bool msi_parent_init_dev_msi_info(struct device *dev, struct irq_domain *domain, in msi_parent_init_dev_msi_info() argument
938 struct irq_domain *parent = domain->parent; in msi_parent_init_dev_msi_info()
1000 struct irq_domain *domain, *parent = dev->msi.domain; in msi_create_device_irq_domain() local
1053 domain = __msi_create_irq_domain(fwnode, &bundle->info, IRQ_DOMAIN_FLAG_MSI_DEVICE, parent); in msi_create_device_irq_domain()
1054 if (!domain) in msi_create_device_irq_domain()
1057 domain->dev = dev; in msi_create_device_irq_domain()
1058 dev->msi.data->__domains[domid].domain = domain; in msi_create_device_irq_domain()
1080 struct irq_domain *domain; in msi_remove_device_irq_domain() local
1084 domain = msi_get_device_domain(dev, domid); in msi_remove_device_irq_domain()
1086 if (!domain || !irq_domain_is_msi_device(domain)) in msi_remove_device_irq_domain()
1089 dev->msi.data->__domains[domid].domain = NULL; in msi_remove_device_irq_domain()
1090 info = domain->host_data; in msi_remove_device_irq_domain()
1091 if (irq_domain_is_msi_device(domain)) in msi_remove_device_irq_domain()
1092 fwnode = domain->fwnode; in msi_remove_device_irq_domain()
1093 irq_domain_remove(domain); in msi_remove_device_irq_domain()
1113 struct irq_domain *domain; in msi_match_device_irq_domain() local
1117 domain = msi_get_device_domain(dev, domid); in msi_match_device_irq_domain()
1118 if (domain && irq_domain_is_msi_device(domain)) { in msi_match_device_irq_domain()
1119 info = domain->host_data; in msi_match_device_irq_domain()
1126 static int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, in msi_domain_prepare_irqs() argument
1129 struct msi_domain_info *info = domain->host_data; in msi_domain_prepare_irqs()
1132 return ops->msi_prepare(domain, dev, nvec, arg); in msi_domain_prepare_irqs()
1146 static bool msi_check_reservation_mode(struct irq_domain *domain, in msi_check_reservation_mode() argument
1152 switch(domain->bus_token) { in msi_check_reservation_mode()
1176 static int msi_handle_pci_fail(struct irq_domain *domain, struct msi_desc *desc, in msi_handle_pci_fail() argument
1179 switch(domain->bus_token) { in msi_handle_pci_fail()
1202 static int msi_init_virq(struct irq_domain *domain, int virq, unsigned int vflags) in msi_init_virq() argument
1204 struct irq_data *irqd = irq_domain_get_irq_data(domain, virq); in msi_init_virq()
1241 static int __msi_domain_alloc_irqs(struct device *dev, struct irq_domain *domain, in __msi_domain_alloc_irqs() argument
1245 struct msi_domain_info *info = domain->host_data; in __msi_domain_alloc_irqs()
1253 ret = msi_domain_prepare_irqs(domain, dev, ctrl->nirqs, &arg); in __msi_domain_alloc_irqs()
1269 if (msi_check_reservation_mode(domain, info, dev)) in __msi_domain_alloc_irqs()
1281 ops->prepare_desc(domain, &arg, desc); in __msi_domain_alloc_irqs()
1285 virq = __irq_domain_alloc_irqs(domain, -1, desc->nvec_used, in __msi_domain_alloc_irqs()
1289 return msi_handle_pci_fail(domain, desc, allocated); in __msi_domain_alloc_irqs()
1294 ret = msi_init_virq(domain, virq + i, vflags); in __msi_domain_alloc_irqs()
1322 struct irq_domain *domain; in __msi_domain_alloc_locked() local
1328 domain = msi_get_device_domain(dev, ctrl->domid); in __msi_domain_alloc_locked()
1329 if (!domain) in __msi_domain_alloc_locked()
1332 info = domain->host_data; in __msi_domain_alloc_locked()
1340 return ops->domain_alloc_irqs(domain, dev, ctrl->nirqs); in __msi_domain_alloc_locked()
1342 return __msi_domain_alloc_irqs(dev, domain, ctrl); in __msi_domain_alloc_locked()
1435 struct irq_domain *domain; in __msi_domain_alloc_irq_at() local
1440 domain = msi_get_device_domain(dev, domid); in __msi_domain_alloc_irq_at()
1441 if (!domain) { in __msi_domain_alloc_irq_at()
1463 ret = __msi_domain_alloc_irqs(dev, domain, &ctrl); in __msi_domain_alloc_irq_at()
1532 int msi_device_domain_alloc_wired(struct irq_domain *domain, unsigned int hwirq, in msi_device_domain_alloc_wired() argument
1537 struct device *dev = domain->dev; in msi_device_domain_alloc_wired()
1540 if (WARN_ON_ONCE(!dev || domain->bus_token != DOMAIN_BUS_WIRED_TO_MSI)) in msi_device_domain_alloc_wired()
1546 if (WARN_ON_ONCE(msi_get_device_domain(dev, domid) != domain)) in msi_device_domain_alloc_wired()
1555 static void __msi_domain_free_irqs(struct device *dev, struct irq_domain *domain, in __msi_domain_free_irqs() argument
1559 struct msi_domain_info *info = domain->host_data; in __msi_domain_free_irqs()
1572 irqd = irq_domain_get_irq_data(domain, desc->irq + i); in __msi_domain_free_irqs()
1588 struct irq_domain *domain; in msi_domain_free_locked() local
1593 domain = msi_get_device_domain(dev, ctrl->domid); in msi_domain_free_locked()
1594 if (!domain) in msi_domain_free_locked()
1597 info = domain->host_data; in msi_domain_free_locked()
1601 ops->domain_free_irqs(domain, dev); in msi_domain_free_locked()
1603 __msi_domain_free_irqs(dev, domain, ctrl); in msi_domain_free_locked()
1606 ops->msi_post_free(domain, dev); in msi_domain_free_locked()
1689 void msi_device_domain_free_wired(struct irq_domain *domain, unsigned int virq) in msi_device_domain_free_wired() argument
1692 struct device *dev = domain->dev; in msi_device_domain_free_wired()
1694 if (WARN_ON_ONCE(!dev || !desc || domain->bus_token != DOMAIN_BUS_WIRED_TO_MSI)) in msi_device_domain_free_wired()
1698 if (!WARN_ON_ONCE(msi_get_device_domain(dev, MSI_DEFAULT_DOMAIN) != domain)) { in msi_device_domain_free_wired()
1711 struct msi_domain_info *msi_get_domain_info(struct irq_domain *domain) in msi_get_domain_info() argument
1713 return (struct msi_domain_info *)domain->host_data; in msi_get_domain_info()
1734 struct irq_domain *domain = dev_get_msi_domain(dev); in msi_device_has_isolated_msi() local
1736 for (; domain; domain = domain->parent) in msi_device_has_isolated_msi()
1737 if (domain->flags & IRQ_DOMAIN_FLAG_ISOLATED_MSI) in msi_device_has_isolated_msi()