Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760763AbYCZVLl (ORCPT ); Wed, 26 Mar 2008 17:11:41 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755140AbYCZVLd (ORCPT ); Wed, 26 Mar 2008 17:11:33 -0400 Received: from relay1.sgi.com ([192.48.171.29]:41920 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755836AbYCZVLc (ORCPT ); Wed, 26 Mar 2008 17:11:32 -0400 Date: Wed, 26 Mar 2008 16:11:31 -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 (re-submit) 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: 1947 Lines: 64 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 --- =================================================================== --- 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-26 14:02:32.000000000 -0500 @@ -10,6 +10,8 @@ * */ +#include + #define TIMER_IRQ 0 /* @@ -31,7 +33,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/