• Eric W. Biederman's avatar
    x86_64: restore the proper NR_IRQS define so larger systems work. · 3c7569b2
    Eric W. Biederman authored
    As pointed out and tracked by Yinghai Lu <yhlu.kernel@gmail.com>:
    
     Dhaval Giani got:
     kernel BUG at arch/x86/kernel/io_apic_64.c:357!
     invalid opcode: 0000 [1] SMP
     CPU 24
     ...
    
    his system (x3950) has 8 ioapic, irq > 256
    
    This was caused by:
    
           commit 9b7dc567
           Author: Thomas Gleixner <tglx@linutronix.de>
           Date:   Fri May 2 20:10:09 2008 +0200
    
              x86: unify interrupt vector defines
    
              The interrupt vector defines are copied 4 times around with minimal
              differences. Move them all into asm-x86/irq_vectors.h
    
    It appears that Thomas did not notice that x86_64 does something
    completely different when he merge irq_vectors.h
    
    We can solve this for 2.6.27 by simply reintroducing the old heuristic
    for setting NR_IRQS on x86_64 to a usable value, which trivially removes
    the regression.
    
    Long term it would be nice to harmonize the handling of ioapic interrupts
    of x86_32 and x86_64 so we don't have this kind of confusion.
    
    Dhaval Giani <dhaval@linux.vnet.ibm.com> tested an earlier version of
    this patch by YH which confirms simply increasing NR_IRQS fixes the
    problem.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Acked-by: default avatarYinghai Lu <yhlu.kernel@gmail.com>
    Cc: Dhaval Giani <dhaval@linux.vnet.ibm.com>
    Cc: Mike Travis <travis@sgi.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    3c7569b2
irq_vectors.h 4.93 KB