Messages in this thread | | | Date | Wed, 24 Nov 2010 14:56:06 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [question] NR_IRQS in genirq |
| |
On Wed, 24 Nov 2010, Paul Mundt wrote:
> On Wed, Nov 24, 2010 at 03:28:37PM +0800, Haojian Zhuang wrote: > > Hi all, > > > > I'm using the latest kernel 2.6.37-rc1. Now I met some issues on genirq. > > > > 1. While SPARSE IRQ is enabled, nr_irqs may be larger than NR_IRQS. > > But the allocated_irqs bitmap (kernel/irq/irqdesc.c) is restricted in > > NR_IRQS. Is it an issue? > > > > 2. irqs_resend bitmap of kernel/irq/resend.c is also restricted in > > NR_IRQS. Is it an issue, too? > > > Perhaps something like: > > diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c > index 9988d03..11bd76c 100644 > --- a/kernel/irq/irqdesc.c > +++ b/kernel/irq/irqdesc.c > @@ -215,6 +215,11 @@ int __init early_irq_init(void) > initcnt = arch_probe_nr_irqs(); > printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d %d\n", NR_IRQS, nr_irqs, initcnt); > > + if (unlikely(nr_irqs > NR_IRQS)) { > + WARN(1, "Probed more than NR_IRQS, chomping.\n"); > + nr_irqs = NR_IRQS; > + }
Yep, we need that sanity check, but the WARN() is overkill as we already know the call chain :)
Thanks,
tglx
| |