Skip to content

Commit

Permalink
x86: size NR_IRQS on 32-bit systems the same way as 64-bit
Browse files Browse the repository at this point in the history
Impact: make NR_IRQS big enough for system with lots of apic/pins

If lots of IO_APIC's are there (or can be there), size the same way
as 64-bit, depending on MAX_IO_APICS and NR_CPUS.

This fixes the boot problem reported by Ben Hutchings on a 32-bit
server with 5 IO-APICs and 240 IO-APIC pins.

Signed-off-by: Yinghai <yinghai@kernel.org>
Tested-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Yinghai Lu authored and Ingo Molnar committed Nov 6, 2008
1 parent c78d0cf commit 1b48976
Showing 1 changed file with 6 additions and 14 deletions.
20 changes: 6 additions & 14 deletions arch/x86/include/asm/irq_vectors.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,30 +101,22 @@
#define LAST_VM86_IRQ 15
#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15)

#ifdef CONFIG_X86_64
#if defined(CONFIG_X86_IO_APIC) && !defined(CONFIG_PARAVIRT) && !defined(CONFIG_X86_VISWS) && !defined(CONFIG_X86_VOYAGER)
# if NR_CPUS < MAX_IO_APICS
# define NR_IRQS (NR_VECTORS + (32 * NR_CPUS))
# else
# define NR_IRQS (NR_VECTORS + (32 * MAX_IO_APICS))
# endif

#elif !defined(CONFIG_X86_VOYAGER)
#elif defined(CONFIG_PARAVIRT) || defined(CONFIG_X86_VISWS) || defined(CONFIG_X86_VOYAGER)

# if defined(CONFIG_X86_IO_APIC) || defined(CONFIG_PARAVIRT) || defined(CONFIG_X86_VISWS)

# define NR_IRQS 224

# else /* IO_APIC || PARAVIRT */

# define NR_IRQS 16

# endif
# define NR_IRQS 224

#else /* !VISWS && !VOYAGER */
#else /* IO_APIC || PARAVIRT */

# define NR_IRQS 224
# define NR_IRQS 16

#endif /* VISWS */
#endif

/* Voyager specific defines */
/* These define the CPIs we use in linux */
Expand Down

0 comments on commit 1b48976

Please sign in to comment.