Re: [PATCH 3/4] irq: initialize nr_irqs based on nr_cpu_ids

Ingo Molnar
2009-01-10T22:50:39Z

* Mike Travis <travis@sgi.com> wrote:

> Impact: Reduce memory usage.
>
> This is the second half of the changes to make the irq_desc_ptrs be
> variable sized based on nr_cpu_ids. The algorithm is the same as the
> setting of NR_IRQS except use nr_cpu_ids instead of NR_CPUS. This is
> only when CONFIG_SPARSE_IRQS=y.
>
> Signed-off-by: Mike Travis <travis@sgi.com>
> ---
> kernel/irq/handle.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> Files linux-2.6-for-ingo.orig/kernel/irq/.handle.c.swp and linux-2.6-for-ingo/kernel/irq/.handle.c.swp differ
> --- linux-2.6-for-ingo.orig/kernel/irq/handle.c
> +++ linux-2.6-for-ingo/kernel/irq/handle.c
> @@ -133,6 +133,11 @@ int __init early_irq_init(void)
> int legacy_count;
> int i;
>
> + /* initialize nr_irqs based on nr_cpu_ids */
> + nr_irqs = (8 * nr_cpu_ids) > (32 * MAX_IO_APICS) ?
> + NR_VECTORS + (8 * nr_cpu_ids) :
> + NR_VECTORS + (32 * MAX_IO_APICS);
> +

this will break non-x86. Please move this to the x86 early-irq-init
function instead, and also sync it up with the current NR_IRQS sizing
macro.

I.e. do not duplicate the numbers but introduce some sort of
max_nr_irqs(nr_cpus) define that is used to initialize NR_IRQS and also
used later on to narrow down nr_irqs later on.

Ingo