Commit 0be6652f authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Linus Torvalds
Browse files

[PATCH] genirq: x86_64 irq: Reenable migrating irqs to other cpus

In the latest changes the code for migrating x86_64 irqs was dropped.  This
reads it in a fashion that will work even if we change the vector on level
triggered irqs when we migrate them.

[ build fix]
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 e7b946e9
......@@ -1254,18 +1254,48 @@ static int ioapic_retrigger_vector(unsigned int vector)
* races.
static void ack_apic(unsigned int vector)
static void ack_apic(unsigned int irq)
static void ack_apic_edge(unsigned int irq)
static void ack_apic_level(unsigned int irq)
int do_unmask_irq = 0;
/* If we are moving the irq we need to mask it */
if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) {
do_unmask_irq = 1;
* We must acknowledge the irq before we move it or the acknowledge will
* not propogate properly.
/* Now we can move and renable the irq */
if (unlikely(do_unmask_irq))
static struct irq_chip ioapic_chip __read_mostly = {
.name = "IO-APIC",
.startup = startup_ioapic_vector,
.mask = mask_ioapic_vector,
.unmask = unmask_ioapic_vector,
.ack = ack_apic,
.eoi = ack_apic,
.ack = ack_apic_edge,
.eoi = ack_apic_level,
.set_affinity = set_ioapic_affinity_vector,
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