Re: [PATCH] 2.6.1-mm2: Get irq_vector size right for generic subarchUP installer kernels

From: Zwane Mwaikambo
Date: Tue Jan 13 2004 - 20:02:45 EST


On Tue, 13 Jan 2004, James Cleverdon wrote:

> Problem: Earlier I didn't consider the case of the generic sub-arch and
> uni-proc installer kernels used by a number of distros. It currently is
> scaled by NR_CPUS. The correct values should be big for summit and generic,
> and can stay the same for all others.

This all looks strange, especially in assign_irq_vector() does this
mean that you'll try and allocate up to 1024 vectors?

> diff -pru 2.6.1-mm2/include/asm-i386/mach-default/irq_vectors.h
> t1mm2/include/asm-i386/mach-default/irq_vectors.h
> --- 2.6.1-mm2/include/asm-i386/mach-default/irq_vectors.h 2004-01-08
> 22:59:19.000000000 -0800
> +++ t1mm2/include/asm-i386/mach-default/irq_vectors.h 2004-01-13
> 13:43:56.000000000 -0800
> @@ -90,8 +90,12 @@
> #else
> #ifdef CONFIG_X86_IO_APIC
> #define NR_IRQS 224
> -# if (224 >= 32 * NR_CPUS)
> -# define NR_IRQ_VECTORS NR_IRQS
> +/*
> + * For Summit or generic (i.e. installer) kernels, we have lots of I/O APICs,
> + * even with uni-proc kernels, so use a big array.
> + */
> +# if defined(CONFIG_X86_SUMMIT) || defined(CONFIG_X86_GENERICARCH)
> +# define NR_IRQ_VECTORS 1024
> # else
> # define NR_IRQ_VECTORS (32 * NR_CPUS)
> # endif
diff -pru 2.6.1-mm2/include/asm-i386/mach-default/irq_vectors.h t1mm2/include/asm-i386/mach-default/irq_vectors.h
--- 2.6.1-mm2/include/asm-i386/mach-default/irq_vectors.h 2004-01-08 22:59:19.000000000 -0800
+++ t1mm2/include/asm-i386/mach-default/irq_vectors.h 2004-01-13 13:43:56.000000000 -0800
@@ -90,8 +90,12 @@
#else
#ifdef CONFIG_X86_IO_APIC
#define NR_IRQS 224
-# if (224 >= 32 * NR_CPUS)
-# define NR_IRQ_VECTORS NR_IRQS
+/*
+ * For Summit or generic (i.e. installer) kernels, we have lots of I/O APICs,
+ * even with uni-proc kernels, so use a big array.
+ */
+# if defined(CONFIG_X86_SUMMIT) || defined(CONFIG_X86_GENERICARCH)
+# define NR_IRQ_VECTORS 1024
# else
# define NR_IRQ_VECTORS (32 * NR_CPUS)
# endif