|
@@ -109,9 +109,11 @@ static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|
if (irq_find_mapping(domain, hwirq) > 0)
|
|
if (irq_find_mapping(domain, hwirq) > 0)
|
|
return -EEXIST;
|
|
return -EEXIST;
|
|
|
|
|
|
- ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg);
|
|
|
|
- if (ret < 0)
|
|
|
|
- return ret;
|
|
|
|
|
|
+ if (domain->parent) {
|
|
|
|
+ ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg);
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
|
|
for (i = 0; i < nr_irqs; i++) {
|
|
for (i = 0; i < nr_irqs; i++) {
|
|
ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
|
|
ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
|