Thomas, On Friday 13 September 2013 10:55 AM, Santosh Shilimkar wrote: > On Friday 13 September 2013 10:24 AM, Thomas Gleixner wrote: [...] >> Before you dig into MSI, lets talk about irq domains first. >> >> GIC implements a legacy irq domain, i.e. a linear domain of all >> possible GIC interrupts with a 1:1 mapping. >> >> So why can't you make use of irq domains and have the whole routing >> business implemented sanely? >> >> What's needed is in gic_init_bases(): >> >> if (of_property_read(node, "routable_irqs", &nr_routable_irqs) { >> irq_domain_add_legacy(nr_gic_irqs); >> } else { >> irq_domain_add_legacy(nr_per_cpu_irqs); >> irq_domain_add_linear(nr_routable_irqs); >> } >> >> Now that separate domain has an xlate function which grabs a free GIC >> irq from a bitmap and returns the hardware irq number in the gic >> space. The map/unmap callbacks take care of setting up / tearing down >> the route in the crossbar. >> >> Thoughts? >> > This sounds pretty good idea. We will explore above option. > Thanks Thomas. > After further looking into this, the irqdomain approach lets us setup the map only once during the init. This is similar to the earlier approach of cross-bar driver where at probe time the router was setup. The whole debate started with the fact that we shouldn't fix the irq mapping at probe and should dynamically change the mapping based on [request/free]_irq() to be able to maximize the use of the IP. Since we have agreed now to move ahead with irdomain, i thought of mentioning it here. Regards, Santosh -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html