Commit 1ce03373 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Linus Torvalds
Browse files

[PATCH] genirq: msi: make the msi code irq based and not vector based

The msi currently allocates irqs backwards.  First it allocates a platform
dependent routing value for an interrupt the ``vector'' and then it figures
out from the vector which irq you are on.

For ia64 this is fine.  For x86 and x86_64 this is complete nonsense and makes
an enourmous mess of the irq handling code and prevents some pretty
significant cleanups in the code for handling large numbers of irqs.

This patch refactors msi.c to work in terms of irqs and create_irq/destroy_irq
for dynamically managing irqs.

Hopefully this is finally a version of msi.c that is useful on more than just
x86 derivatives.
Signed-off-by: default avatarEric W. Biederman <>
Cc: Ingo Molnar <>
Cc: Thomas Gleixner <>
Cc: Benjamin Herrenschmidt <>
Cc: Rajesh Shah <>
Cc: Andi Kleen <>
Cc: "Protasevich, Natalie" <>
Cc: "Luck, Tony" <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent c4fa0bbf
This diff is collapsed.
......@@ -8,9 +8,6 @@
#include <asm/msi.h>
extern int vector_irq[NR_VECTORS];
extern void (*interrupt[NR_IRQS])(void);
* MSI-X Address Register
......@@ -58,9 +55,9 @@ struct msi_desc {
__u8 maskbit : 1; /* mask-pending bit supported ? */
__u8 state : 1; /* {0: free, 1: busy} */
__u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
__u8 entry_nr; /* specific enabled entry */
__u8 default_vector; /* default pre-assigned vector */
__u8 pos; /* Location of the msi capability */
__u16 entry_nr; /* specific enabled entry */
unsigned default_irq; /* default pre-assigned irq */
struct {
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment