diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-10-08 15:49:03 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-10-12 10:53:38 -0400 |
commit | 5346b2a78fa3b900da672928978475acdd4632dc (patch) | |
tree | 22ae7cd4eeb4bf8b6d5a826b9e6342bfbbef6b46 /arch/x86 | |
parent | f7e909eae444ff733ecc5628af76d89c363ab480 (diff) |
x86: Convert msi affinity setting to new chip functions
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 60ca9a47087d..268c5450392b 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -3301,26 +3301,24 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq, | |||
3301 | } | 3301 | } |
3302 | 3302 | ||
3303 | #ifdef CONFIG_SMP | 3303 | #ifdef CONFIG_SMP |
3304 | static int set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask) | 3304 | static int |
3305 | msi_set_affinity(struct irq_data *data, const struct cpumask *mask, bool force) | ||
3305 | { | 3306 | { |
3306 | struct irq_desc *desc = irq_to_desc(irq); | 3307 | struct irq_cfg *cfg = data->chip_data; |
3307 | struct irq_cfg *cfg; | ||
3308 | struct msi_msg msg; | 3308 | struct msi_msg msg; |
3309 | unsigned int dest; | 3309 | unsigned int dest; |
3310 | 3310 | ||
3311 | if (__ioapic_set_affinity(&desc->irq_data, mask, &dest)) | 3311 | if (__ioapic_set_affinity(data, mask, &dest)) |
3312 | return -1; | 3312 | return -1; |
3313 | 3313 | ||
3314 | cfg = get_irq_desc_chip_data(desc); | 3314 | __get_cached_msi_msg(data->msi_desc, &msg); |
3315 | |||
3316 | __get_cached_msi_msg(desc->irq_data.msi_desc, &msg); | ||
3317 | 3315 | ||
3318 | msg.data &= ~MSI_DATA_VECTOR_MASK; | 3316 | msg.data &= ~MSI_DATA_VECTOR_MASK; |
3319 | msg.data |= MSI_DATA_VECTOR(cfg->vector); | 3317 | msg.data |= MSI_DATA_VECTOR(cfg->vector); |
3320 | msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK; | 3318 | msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK; |
3321 | msg.address_lo |= MSI_ADDR_DEST_ID(dest); | 3319 | msg.address_lo |= MSI_ADDR_DEST_ID(dest); |
3322 | 3320 | ||
3323 | __write_msi_msg(desc->irq_data.msi_desc, &msg); | 3321 | __write_msi_msg(data->msi_desc, &msg); |
3324 | 3322 | ||
3325 | return 0; | 3323 | return 0; |
3326 | } | 3324 | } |
@@ -3370,14 +3368,14 @@ ir_set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask) | |||
3370 | * which implement the MSI or MSI-X Capability Structure. | 3368 | * which implement the MSI or MSI-X Capability Structure. |
3371 | */ | 3369 | */ |
3372 | static struct irq_chip msi_chip = { | 3370 | static struct irq_chip msi_chip = { |
3373 | .name = "PCI-MSI", | 3371 | .name = "PCI-MSI", |
3374 | .irq_unmask = unmask_msi_irq, | 3372 | .irq_unmask = unmask_msi_irq, |
3375 | .irq_mask = mask_msi_irq, | 3373 | .irq_mask = mask_msi_irq, |
3376 | .irq_ack = ack_apic_edge, | 3374 | .irq_ack = ack_apic_edge, |
3377 | #ifdef CONFIG_SMP | 3375 | #ifdef CONFIG_SMP |
3378 | .set_affinity = set_msi_irq_affinity, | 3376 | .irq_set_affinity = msi_set_affinity, |
3379 | #endif | 3377 | #endif |
3380 | .irq_retrigger = ioapic_retrigger_irq, | 3378 | .irq_retrigger = ioapic_retrigger_irq, |
3381 | }; | 3379 | }; |
3382 | 3380 | ||
3383 | static struct irq_chip msi_ir_chip = { | 3381 | static struct irq_chip msi_ir_chip = { |