public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jack Steiner <steiner@sgi.com>
To: mingo@elte.hu, tglx@linutronix.de
Cc: linux-kernel@vger.kernel.org, yinghai@kernel.org
Subject: [PATCH] x86 - irq vector assignment
Date: Tue, 21 Sep 2010 15:05:02 -0500	[thread overview]
Message-ID: <20100921200502.GA26587@sgi.com> (raw)

Try to assign irq vectors to cpus on the correct node & fall back to global
assignment only if node-local fails. This reduces the chances of
using all of the interrupt vectors of a single cpu.

Signed-off-by: Jack Steiner <steiner@sgi.com>


---
Note: this is a fix for a problem we saw on systems with a large number of IOHs.
The IOHs are distributed across 10's of nodes.

Early in boot, the IO infrastructure assigns interrupts for the DMA engines.
Currently, all interrupts are targeted to cpu 0. This uses all interrupt
vectors on cpu 0. Later, some drivers try to create irqs targeted to
cpu 0. The assignment fails because all vectors are assigned.

This is a repost of a patch sent earlier. See
	http://marc.info/?l=linux-kernel&m=127740806705617&w=2
	http://marc.info/?l=linux-kernel&m=127791052828867&w=2



 arch/x86/kernel/apic/io_apic.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: linux/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux.orig/arch/x86/kernel/apic/io_apic.c	2010-09-17 13:00:19.164638447 -0500
+++ linux/arch/x86/kernel/apic/io_apic.c	2010-09-17 13:00:23.448595373 -0500
@@ -3253,6 +3253,11 @@ unsigned int create_irq_nr(unsigned int
 		desc_new = move_irq_desc(desc_new, node);
 		cfg_new = desc_new->chip_data;
 
+#ifdef CONFIG_NUMA
+		if (node >= 0 && __assign_irq_vector(new, cfg_new, node_to_cpumask_map[node]) == 0)
+			irq = new;
+		else
+#endif
 		if (__assign_irq_vector(new, cfg_new, apic->target_cpus()) == 0)
 			irq = new;
 		break;

             reply	other threads:[~2010-09-21 20:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-21 20:05 Jack Steiner [this message]
2010-09-21 20:41 ` [PATCH] x86 - irq vector assignment Yinghai Lu
2010-09-21 21:34   ` Thomas Gleixner
2010-09-21 23:12     ` Yinghai Lu
2010-09-21 23:53       ` Jack Steiner

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=20100921200502.GA26587@sgi.com \
    --to=steiner@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=yinghai@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox