All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] - Complete IRQ interrupt migration in arch_enable_uv_irq()
@ 2009-07-20 14:28 Jack Steiner
  2009-08-04 15:32 ` [tip:x86/urgent] x86, UV: " tip-bot for Jack Steiner
  0 siblings, 1 reply; 2+ messages in thread
From: Jack Steiner @ 2009-07-20 14:28 UTC (permalink / raw)
  To: mingo, tglx; +Cc: linux-kernel

In uv_setup_irq(), the call to create_irq() initially assigns IRQ
vectors to cpu 0. The subsequent call to assign_irq_vector() in
arch_enable_uv_irq() migrates the IRQ to another cpu and frees the cpu
0 vector - at least it will be freed as soon as the "IRQ move"
completes. 

arch_enable_uv_irq() needs to send a cleanup IPI to complete the IRQ move.
Otherwise, assignment of GRU interrupts on large systems (>200 cpus)
will exhaust the cpu 0 interrupt vectors and initialization of the GRU
driver will fail.

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


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

Index: linux/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux.orig/arch/x86/kernel/apic/io_apic.c	2009-07-20 07:55:46.000000000 -0500
+++ linux/arch/x86/kernel/apic/io_apic.c	2009-07-20 07:56:33.000000000 -0500
@@ -3737,6 +3737,9 @@ int arch_enable_uv_irq(char *irq_name, u
 	mmr_pnode = uv_blade_to_pnode(mmr_blade);
 	uv_write_global_mmr64(mmr_pnode, mmr_offset, mmr_value);
 
+	if (cfg->move_in_progress)
+		send_cleanup_vector(cfg);
+
 	return irq;
 }
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-08-04 15:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-20 14:28 [PATCH] - Complete IRQ interrupt migration in arch_enable_uv_irq() Jack Steiner
2009-08-04 15:32 ` [tip:x86/urgent] x86, UV: " tip-bot for Jack Steiner

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.