aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/io_apic.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2011-09-18 00:24:37 +0100
committerJan Beulich <jbeulich@suse.com>2011-09-18 00:24:37 +0100
commita71eeb324fcc21bb2789917601326a2dfc220704 (patch)
tree5a7a8dd18c9663490af6c74b53705fc378fba6d7 /xen/arch/x86/io_apic.c
parent6ac9f9c55cce7e94445120ee8751a165dfe2d9d3 (diff)
downloadxen-a71eeb324fcc21bb2789917601326a2dfc220704.tar.gz
xen-a71eeb324fcc21bb2789917601326a2dfc220704.tar.bz2
xen-a71eeb324fcc21bb2789917601326a2dfc220704.zip
pass struct irq_desc * to set_affinity() IRQ accessors
This is because the descriptor is generally more useful (with the IRQ number being accessible in it if necessary) and going forward will hopefully allow to remove all direct accesses to the IRQ descriptor array, in turn making it possible to make this some other, more efficient data structure. Signed-off-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/arch/x86/io_apic.c')
-rw-r--r--xen/arch/x86/io_apic.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 6c03c407c6..3bf2bae7b9 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -658,7 +658,7 @@ unsigned int set_desc_affinity(struct irq_desc *desc, const cpumask_t *mask)
}
static void
-set_ioapic_affinity_irq_desc(struct irq_desc *desc, const cpumask_t *mask)
+set_ioapic_affinity_irq(struct irq_desc *desc, const cpumask_t *mask)
{
unsigned long flags;
unsigned int dest;
@@ -695,16 +695,6 @@ set_ioapic_affinity_irq_desc(struct irq_desc *desc, const cpumask_t *mask)
spin_unlock_irqrestore(&ioapic_lock, flags);
}
-
-static void
-set_ioapic_affinity_irq(unsigned int irq, const struct cpumask *mask)
-{
- struct irq_desc *desc;
-
- desc = irq_to_desc(irq);
-
- set_ioapic_affinity_irq_desc(desc, mask);
-}
#endif /* CONFIG_SMP */
/*
@@ -802,7 +792,7 @@ void /*__init*/ setup_ioapic_dest(void)
irq = pin_2_irq(irq_entry, ioapic, pin);
cfg = irq_cfg(irq);
BUG_ON(cpus_empty(cfg->cpu_mask));
- set_ioapic_affinity_irq(irq, &cfg->cpu_mask);
+ set_ioapic_affinity_irq(irq_to_desc(irq), &cfg->cpu_mask);
}
}
@@ -1780,7 +1770,7 @@ static void mask_and_ack_level_ioapic_irq (unsigned int irq)
if ((irq_desc[irq].status & IRQ_MOVE_PENDING) &&
!io_apic_level_ack_pending(irq))
- move_masked_irq(irq);
+ move_masked_irq(desc);
if ( !(v & (1 << (i & 0x1f))) ) {
spin_lock(&ioapic_lock);
@@ -1799,7 +1789,9 @@ static void end_level_ioapic_irq (unsigned int irq, u8 vector)
{
if ( directed_eoi_enabled )
{
- if ( !(irq_desc[irq].status & (IRQ_DISABLED|IRQ_MOVE_PENDING)) )
+ struct irq_desc *desc = irq_to_desc(irq);
+
+ if ( !(desc->status & (IRQ_DISABLED|IRQ_MOVE_PENDING)) )
{
eoi_IO_APIC_irq(irq);
return;
@@ -1807,9 +1799,9 @@ static void end_level_ioapic_irq (unsigned int irq, u8 vector)
mask_IO_APIC_irq(irq);
eoi_IO_APIC_irq(irq);
- if ( (irq_desc[irq].status & IRQ_MOVE_PENDING) &&
+ if ( (desc->status & IRQ_MOVE_PENDING) &&
!io_apic_level_ack_pending(irq) )
- move_masked_irq(irq);
+ move_masked_irq(desc);
}
if ( !(irq_desc[irq].status & IRQ_DISABLED) )