Messages in this thread | | | Subject | RE: [Questions]: how to extend nr_irqs for arch arm64 | Date | Mon, 11 Jan 2016 19:15:01 +0800 | From | Zhou Qiao(周侨) <> |
| |
> -----Original Message----- > From: Thomas Gleixner [mailto:tglx@linutronix.de] > Sent: Monday, January 11, 2016 5:18 PM > To: Zhou Qiao(周侨) > Cc: jason@lakedaemon.net; linux-kernel@vger.kernel.org > Subject: RE: [Questions]: how to extend nr_irqs for arch arm64 > > On Mon, 11 Jan 2016, Zhou Qiao(周侨) wrote: > > > From: Thomas Gleixner [mailto:tglx@linutronix.de] On Mon, 11 Jan > > > 2016, Zhou Qiao(周侨) wrote: > > > > I met an issue here. The nr_irqs is extended when the start_irq + > > > > cnt > > > > > nr_irqs. So when nr_irqs is not extended(still 64), a device > > > > > with a > > > > large > > > > hr_irq(70) will get a wrong virq. since it will be mod by nr_irqs > > > > before > > > > > > No, it won't get a wrong virq. It will get a virq and it does not > > > matter at all whether the hardware irq number is 10, 70, 500 or > 5000. > > > What's your problem? > > > > Let's assume the hw_irq is 70, and after the mod operation, it will > > call irq_alloc_descs_from with parameter from = 6, instead of 70. So > > the newly allocated descriptor is mapped to hw_irq = 6, not 70. Later > > when driver registers irq with irq = 70, it will fail since there is > > no irq descriptor for irq = 70. > > Rightfully so. The driver cannot assume irq=70. That's what the device > tree mapping is for. It will tell the driver that it has to request > virq 6. There is no 1:1 mapping between hardware irqs and virqs. You're right. Actually the virqs is just a next_zero_area picked runtime and it doesn't matter whether the hw_irq is mod or not(or mod by whichever). Thanks a lot for the help. > > Thanks, > > tglx
| |