[RFC PATCH 13/17] x86: allow the irq->vector translation to be determined outside of ioapic

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Gregory Haskins
Date: Tuesday, March 31, 2009 - 11:43 am

The ioapic code currently privately manages the mapping between irq
and vector.  This results in some layering violations as the support
for certain MSI operations need this info.  As a result, the MSI
code itself was moved to the ioapic module.  This is not really
optimal.

We now have another need to gain access to the vector assignment on
x86.  However, rather than put yet another inappropriately placed
function into io-apic, lets create a way to export this simple data
and therefore allow the logic to sit closer to where it belongs.

Ideally we should abstract the entire notion of irq->vector management
out of io-apic, but we leave that as an excercise for another day.

Signed-off-by: Gregory Haskins <ghaskins@novell.com>
---

 arch/x86/include/asm/irq.h |    6 ++++++
 arch/x86/kernel/io_apic.c  |   25 +++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/irq.h b/arch/x86/include/asm/irq.h
index 592688e..b1726d8 100644
--- a/arch/x86/include/asm/irq.h
+++ b/arch/x86/include/asm/irq.h
@@ -40,6 +40,12 @@ extern unsigned int do_IRQ(struct pt_regs *regs);
 extern void init_IRQ(void);
 extern void native_init_IRQ(void);
 
+#ifdef CONFIG_SMP
+extern int set_irq_affinity(int irq, cpumask_t mask);
+#endif
+
+extern int irq_to_vector(int irq);
+
 /* Interrupt vector management */
 extern DECLARE_BITMAP(used_vectors, NR_VECTORS);
 extern int vector_used_by_percpu_irq(unsigned int vector);
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index bc7ac4d..86a2c36 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -614,6 +614,14 @@ set_ioapic_affinity_irq(unsigned int irq, const struct cpumask *mask)
 
 	set_ioapic_affinity_irq_desc(desc, mask);
 }
+
+int set_irq_affinity(int irq, cpumask_t mask)
+{
+	set_ioapic_affinity_irq(irq, &mask);
+
+	return 0;
+}
+
 #endif /* CONFIG_SMP */
 
 /*
@@ -3249,6 +3257,23 @@ void destroy_irq(unsigned int irq)
 	spin_unlock_irqrestore(&vector_lock, flags);
 }
 
+int irq_to_vector(int irq)
+{
+	struct irq_cfg *cfg;
+	unsigned long flags;
+	int ret = -ENOENT;
+
+	spin_lock_irqsave(&vector_lock, flags);
+
+	cfg = irq_cfg(irq);
+	if (cfg && cfg->vector != 0)
+		ret = cfg->vector;
+
+	spin_unlock_irqrestore(&vector_lock, flags);
+
+	return ret;
+}
+
 /*
  * MSI message composition
  */

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 02/17] vbus: add virtual-bus definitions, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 04/17] vbus: add bus-registration notifiers, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 07/17] ioq: add vbus helpers, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 09/17] net: Add vbus_enet driver, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 11/17] venet: add scatter-gather support, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 12/17] venettap: add scatter-gather support, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 13/17] x86: allow the irq->vector translation t ..., Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 16/17] kvm: Add VBUS support to the host, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 17/17] kvm: Add guest-side support for VBUS, Gregory Haskins, (Tue Mar 31, 11:44 am)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 12:20 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Avi Kivity, (Tue Mar 31, 12:22 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 12:39 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 1:02 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 1:13 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Avi Kivity, (Tue Mar 31, 1:18 pm)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Tue Mar 31, 1:18 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 1:32 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 1:37 pm)
Re: [RFC PATCH 09/17] net: Add vbus_enet driver, Stephen Hemminger, (Tue Mar 31, 1:39 pm)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Tue Mar 31, 1:58 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 1:59 pm)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Tue Mar 31, 11:08 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 4:35 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 5:03 am)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Wed Apr 1, 5:12 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 6:23 am)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Wed Apr 1, 6:57 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:19 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:42 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 9:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 10:01 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 11:45 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 1:29 pm)
Re: [RFC PATCH 00/17] virtual-bus, Chris Wright, (Wed Apr 1, 1:40 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 2:09 pm)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 3:23 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 4:05 pm)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 5:29 pm)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Wed Apr 1, 6:24 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:27 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:09 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 8:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:15 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Wed Apr 1, 11:46 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Wed Apr 1, 11:51 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 1:52 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 1:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:02 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:16 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:27 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:29 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:33 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:38 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:41 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:44 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 3:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 3:55 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 4:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:43 am)
Re: [RFC PATCH 09/17] net: Add vbus_enet driver, Gregory Haskins, (Thu Apr 2, 4:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:48 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:59 am)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Thu Apr 2, 5:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:22 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:30 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 5:42 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 5:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:50 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:52 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:07 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:08 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:22 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:27 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:36 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:45 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 7:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 7:24 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 7:32 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 7:41 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 7:49 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 7:50 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 8:00 am)
Re: [RFC PATCH 00/17] virtual-bus, Michael S. Tsirkin, (Thu Apr 2, 8:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 8:40 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 8:57 am)
Re: [RFC PATCH 02/17] vbus: add virtual-bus definitions, Ben Hutchings, (Thu Apr 2, 9:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 9:09 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 9:09 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 9:19 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 9:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 10:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 10:17 am)
Re: [RFC PATCH 02/17] vbus: add virtual-bus definitions, Gregory Haskins, (Thu Apr 2, 11:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 11:18 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 6:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Jeremy Fitzhardinge, (Thu Apr 2, 9:43 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gerd Hoffmann, (Fri Apr 3, 3:58 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:12 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Fri Apr 3, 4:18 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 4:28 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:34 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:48 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:55 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:02 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 5:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:15 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:25 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 6:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 6:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 6:37 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 9:28 am)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Sat Apr 4, 8:44 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 1:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 3:00 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Sun Apr 5, 7:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 9:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Sun Apr 5, 9:45 am)
Re: [kvm] Re: [RFC PATCH 00/17] virtual-bus, Alex Williamson, (Mon Apr 20, 11:02 am)