Hi Marc, On 20 February 2019 10:05 Marc Zyngier wrote: > On Wed, 20 Feb 2019 09:07:02 +0000, Phil Edworthy wrote: > > On 19 February 2019 20:29 Marc Zyngier wrote: > > [...] > > > > > + for (i = 0; i < MAX_NR_INPUT_IRQS; i++) > > > > + irq_create_mapping(priv->irq_domain, i); > > > > > > This should never happen. Mappings should be created from discovering > the > > > interrupt specifiers for devices in the DT, and not eagerly at probe time. > > > > The key issue here is that the mappings should not be dynamically > > allocated. On the device that has this hardware, there is a Cortex > > M3 that is likely to use some of these GPIO interrupts. Maybe it > > would be better to limit the number of GPIO irqs that Linux can > > configure dynamically. > > But whatever the M3 is going to use is known statically for a given > instance of this platform, right? You can always tell from the device > tree which pins are available for Linux and which are not. Or can't you? Yes, you can tell what pins are available to Linux. You can't tell how many pins have been setup as GPIO irqs for use by the M3 though. I suppose the DT could describe the M3 as well, though I can imagine that could get complicated. I've not seen a DT that covers different cores running different software, esp. when the M3 firmware doesn't use DT. I was thinking that the DT could have a prop to tell this driver what GPIO irqs are already in use. > > Looks like I've gone off in the wrong direction yet again. > > Nothing we can't help with. If you can explain all the constraints of > the platform, we can come up with a fairly simple driver. And surely > LinusW can chime in for the DT part, which seems to need some loving > too. Many thanks, I need some help here!