Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760236AbYCXObO (ORCPT ); Mon, 24 Mar 2008 10:31:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753746AbYCXObD (ORCPT ); Mon, 24 Mar 2008 10:31:03 -0400 Received: from relay1.sgi.com ([192.48.171.29]:56800 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751878AbYCXObB (ORCPT ); Mon, 24 Mar 2008 10:31:01 -0400 Date: Mon, 24 Mar 2008 09:31:00 -0500 (CDT) From: Alan Mayer To: torvalds@linux-foundation.org, mingo@elte.hu Cc: linux-kernel list , Robin Holt , Jack Steiner , Russ Anderson Subject: [PATCH] x86_64: resize NR_IRQS for large machines Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2027 Lines: 66 Subject: [PATCH] x86_64: resize NR_IRQS for large machines From: Alan Mayer 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. Signed-off-by: Alan Mayer Reviewed-by: Christoph Lameter --- 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 /* -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/