aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/io_apic.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-10-08 15:49:03 -0400
committerThomas Gleixner <tglx@linutronix.de>2010-10-12 10:53:38 -0400
commit5346b2a78fa3b900da672928978475acdd4632dc (patch)
tree22ae7cd4eeb4bf8b6d5a826b9e6342bfbbef6b46 /arch/x86/kernel/apic/io_apic.c
parentf7e909eae444ff733ecc5628af76d89c363ab480 (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/kernel/apic/io_apic.c')
-rw-r--r--arch/x86/kernel/apic/io_apic.c26
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
3304static int set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask) 3304static int
3305msi_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 */
3372static struct irq_chip msi_chip = { 3370static 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
3383static struct irq_chip msi_ir_chip = { 3381static struct irq_chip msi_ir_chip = {