From: Mike Travis <travis@sgi.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Yinghai Lu <yhlu.kernel@gmail.com>, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Dhaval Giani <dhaval@linux.vnet.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, Alan Mayer <ajm@sgi.com>
Subject: Re: [PATCH] x86: 64bit support more than 256 irq v2
Date: Mon, 04 Aug 2008 06:20:29 -0700 [thread overview]
Message-ID: <4897021D.7040708@sgi.com> (raw)
In-Reply-To: <m14p64i0lr.fsf@frodo.ebiederm.org>
Eric W. Biederman wrote:
> "Yinghai Lu" <yhlu.kernel@gmail.com> writes:
>
>> On Fri, Aug 1, 2008 at 7:02 PM, Yinghai Lu <yhlu.kernel@gmail.com> 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 <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
>>>
>>> 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 <yhlu.kernel@gmail.com>
>>> Tested-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
>> 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 <ajm@sgi.com>
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 <clameter@sgi.com>
Signed-off-by: Alan Mayer <ajm@sgi.com>
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 @@
* <tomsoft@informatik.tu-chemnitz.de>
*/
+#if !defined(MAX_IO_APICS)
+#include <asm/apicdef.h>
+#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 <asm/irq.h>
#include <linux/smp.h>
#include <linux/threads.h>
#include <linux/percpu.h>
#include <linux/cpumask.h>
+#include <asm/irq.h>
#include <asm/cputime.h>
/*
next prev parent reply other threads:[~2008-08-04 13:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-02 2:02 [PATCH] x86: 64bit support more than 256 irq v2 Yinghai Lu
2008-08-02 2:16 ` Yinghai Lu
2008-08-02 2:58 ` Eric W. Biederman
2008-08-02 3:11 ` Yinghai Lu
2008-08-02 3:37 ` Eric W. Biederman
2008-08-04 13:20 ` Mike Travis [this message]
2008-08-04 18:16 ` Yinghai Lu
2008-08-03 5:09 ` Eric W. Biederman
2008-08-03 5:26 ` [PATCH] x86_64: Restore the proper NR_IRQS define so larger systems work Eric W. Biederman
2008-08-03 5:58 ` Yinghai Lu
2008-08-03 6:35 ` Eric W. Biederman
2008-08-03 6:54 ` Jeremy Fitzhardinge
2008-08-03 6:44 ` Jeremy Fitzhardinge
-- strict thread matches above, loose matches on Subject: below --
2008-07-29 21:14 [PATCH] x86: 64bit support more than 256 irq v2 Yinghai Lu
2008-07-29 22:16 ` Yinghai Lu
2008-07-29 23:22 ` Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4897021D.7040708@sgi.com \
--to=travis@sgi.com \
--cc=ajm@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=dhaval@linux.vnet.ibm.com \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=yhlu.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.