summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner2010-10-08 22:19:29 +0200
committerThomas Gleixner2010-10-12 16:53:39 +0200
commitfe52b2d25919eaa01c51651a664f4f2ba6bd2a11 (patch)
tree8e7307381d448253529f8f71321bd625bb1dacb9
parentx86: Convert remapped msi to new chip.irq_set_affinity function (diff)
downloadkernel-qcow2-linux-fe52b2d25919eaa01c51651a664f4f2ba6bd2a11.tar.gz
kernel-qcow2-linux-fe52b2d25919eaa01c51651a664f4f2ba6bd2a11.tar.xz
kernel-qcow2-linux-fe52b2d25919eaa01c51651a664f4f2ba6bd2a11.zip
x86: Convert dmar affinity setting to new chip function
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Ingo Molnar <mingo@elte.hu> Cc: David Woodhouse <dwmw2@infradead.org>
-rw-r--r--arch/x86/kernel/apic/io_apic.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 13f8e28ba4d8..6f8ac4c542ba 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -3488,18 +3488,17 @@ void arch_teardown_msi_irq(unsigned int irq)
#if defined (CONFIG_DMAR) || defined (CONFIG_INTR_REMAP)
#ifdef CONFIG_SMP
-static int dmar_msi_set_affinity(unsigned int irq, const struct cpumask *mask)
+static int
+dmar_msi_set_affinity(struct irq_data *data, const struct cpumask *mask,
+ bool force)
{
- struct irq_desc *desc = irq_to_desc(irq);
- struct irq_cfg *cfg;
+ struct irq_cfg *cfg = data->chip_data;
+ unsigned int dest, irq = data->irq;
struct msi_msg msg;
- unsigned int dest;
- if (__ioapic_set_affinity(&desc->irq_data, mask, &dest))
+ if (__ioapic_set_affinity(data, mask, &dest))
return -1;
- cfg = get_irq_desc_chip_data(desc);
-
dmar_msi_read(irq, &msg);
msg.data &= ~MSI_DATA_VECTOR_MASK;
@@ -3515,14 +3514,14 @@ static int dmar_msi_set_affinity(unsigned int irq, const struct cpumask *mask)
#endif /* CONFIG_SMP */
static struct irq_chip dmar_msi_type = {
- .name = "DMAR_MSI",
- .irq_unmask = dmar_msi_unmask,
- .irq_mask = dmar_msi_mask,
- .irq_ack = ack_apic_edge,
+ .name = "DMAR_MSI",
+ .irq_unmask = dmar_msi_unmask,
+ .irq_mask = dmar_msi_mask,
+ .irq_ack = ack_apic_edge,
#ifdef CONFIG_SMP
- .set_affinity = dmar_msi_set_affinity,
+ .irq_set_affinity = dmar_msi_set_affinity,
#endif
- .irq_retrigger = ioapic_retrigger_irq,
+ .irq_retrigger = ioapic_retrigger_irq,
};
int arch_setup_dmar_msi(unsigned int irq)