Messages in this thread | | | Subject | More irqdomain problems (Was: next/mmotm unbootable on G5: irqdomain) | From | Benjamin Herrenschmidt <> | Date | Mon, 23 Jul 2012 16:32:41 +1000 |
| |
Allright, another one Grant:
unsigned int irq_find_mapping(struct irq_domain *domain, irq_hw_number_t hwirq) { struct irq_data *data;
/* Look for default domain if nececssary */ if (domain == NULL) domain = irq_default_domain; if (domain == NULL) return 0;
switch (domain->revmap_type) { case IRQ_DOMAIN_MAP_LEGACY: return irq_domain_legacy_revmap(domain, hwirq); case IRQ_DOMAIN_MAP_LINEAR: return irq_linear_revmap(domain, hwirq); case IRQ_DOMAIN_MAP_TREE: rcu_read_lock(); data = radix_tree_lookup(&domain->revmap_data.tree, hwirq); rcu_read_unlock(); if (data) return data->irq; - break; + return 0; case IRQ_DOMAIN_MAP_NOMAP:
Please, stick a proper commit message and my s-o-b and see if you can fix your tree before you ask Linus to pull because that's not pretty on any pseries .... irq_find_mapping() does get called for all interrupt the first time it's mapped to check if there's a pre-existing mapping, so the case of the thing being unpopulated is absolutely legit.
the NOMAP case has a similar dubious exit case but since I'm not that familiar with NOMAP I haven't touched it.
Cheers, Ben.
| |