From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757048AbYHDNV5 (ORCPT ); Mon, 4 Aug 2008 09:21:57 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756188AbYHDNUc (ORCPT ); Mon, 4 Aug 2008 09:20:32 -0400 Received: from relay1.sgi.com ([192.48.171.29]:38948 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755789AbYHDNUa (ORCPT ); Mon, 4 Aug 2008 09:20:30 -0400 Message-ID: <4897021D.7040708@sgi.com> Date: Mon, 04 Aug 2008 06:20:29 -0700 From: Mike Travis User-Agent: Thunderbird 2.0.0.6 (X11/20070801) MIME-Version: 1.0 To: "Eric W. Biederman" CC: Yinghai Lu , Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Dhaval Giani , Andrew Morton , linux-kernel@vger.kernel.org, Alan Mayer Subject: Re: [PATCH] x86: 64bit support more than 256 irq v2 References: <1217642575-22727-1-git-send-email-yhlu.kernel@gmail.com> <86802c440808011916q1a279ael995eaeaa655c239@mail.gmail.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Eric W. Biederman wrote: > "Yinghai Lu" writes: > >> On Fri, Aug 1, 2008 at 7:02 PM, Yinghai Lu wrote: >>> 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 >>> >>> caused by >>> commit 9b7dc567d03d74a1fbae84e88949b6a60d922d82 >>> Author: Thomas Gleixner >>> 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 >>> >>> because 64bit allow same vector for different cpu to serve different irq >>> >>> need to create that array dynamically later >>> >>> v2: change NR_IRQS to 1024 >>> >>> Signed-off-by: Yinghai Lu >>> Tested-by: Dhaval Giani >> this is for >> http://bugzilla.kernel.org/show_bug.cgi?id=11201 >> >> but need SGI guys to verify in their system. they like to have NR_IRQS to be 224 > > There was a patch that came out a while ago that set NR_IRQS as NR_IOAPICS*32 from > SGI. Where that got to I don't recall. > > Eric That was from Alan ... I'll Cc: him. Here's an early copy (not sure if this was the final one though.) >From: Alan Mayer Subject: [PATCH] x86_64: resize NR_IRQS for large machines On machines with very large numbers of cpus, tables that are dimensioned by NR_IRQS get very large, especially the irq_desc table. They are also very sparsely used. When the cpu count is > MAX_IO_APICS, use MAX_IO_APICS to set NR_IRQS, otherwise use NR_CPUS. Reviewed-by: Christoph Lameter Signed-off-by: Alan Mayer Index: v2.6.25-rc6/include/asm-x86/irq_64.h =================================================================== --- v2.6.25-rc6.orig/include/asm-x86/irq_64.h 2008-03-19 16:52:52.000000000 -0500 +++ v2.6.25-rc6/include/asm-x86/irq_64.h 2008-03-20 16:46:51.000000000 -0500 @@ -10,6 +10,10 @@ * */ +#if !defined(MAX_IO_APICS) +#include +#endif + #define TIMER_IRQ 0 /* @@ -31,7 +35,11 @@ #define FIRST_SYSTEM_VECTOR 0xef /* duplicated in hw_irq.h */ -#define NR_IRQS (NR_VECTORS + (32 *NR_CPUS)) +#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 #define NR_IRQ_VECTORS NR_IRQS static __inline__ int irq_canonicalize(int irq) Index: v2.6.25-rc6/include/linux/kernel_stat.h =================================================================== --- v2.6.25-rc6.orig/include/linux/kernel_stat.h 2008-03-19 16:53:00.000000000 -0500 +++ v2.6.25-rc6/include/linux/kernel_stat.h 2008-03-20 11:12:27.000000000 -0500 @@ -1,11 +1,11 @@ #ifndef _LINUX_KERNEL_STAT_H #define _LINUX_KERNEL_STAT_H -#include #include #include #include #include +#include #include /*