mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
alpha: irq clean up
Stop touching irq_desc[irq] directly, instead use accessor functions provided. Use irq_has_action instead of directly testing the irq_desc. Tested-by: Michael Cree <mcree@orcon.net.nz> Signed-off-by: Kyle McMartin <kyle@redhat.com> Signed-off-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
d5ccde0a64
commit
a891b393dd
20 changed files with 67 additions and 58 deletions
|
@ -44,10 +44,11 @@ static char irq_user_affinity[NR_IRQS];
|
|||
|
||||
int irq_select_affinity(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc = irq_to_desc[irq];
|
||||
static int last_cpu;
|
||||
int cpu = last_cpu + 1;
|
||||
|
||||
if (!irq_desc[irq].chip->set_affinity || irq_user_affinity[irq])
|
||||
if (!desc || !get_irq_desc_chip(desc)->set_affinity || irq_user_affinity[irq])
|
||||
return 1;
|
||||
|
||||
while (!cpu_possible(cpu) ||
|
||||
|
@ -55,8 +56,8 @@ int irq_select_affinity(unsigned int irq)
|
|||
cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0);
|
||||
last_cpu = cpu;
|
||||
|
||||
cpumask_copy(irq_desc[irq].affinity, cpumask_of(cpu));
|
||||
irq_desc[irq].chip->set_affinity(irq, cpumask_of(cpu));
|
||||
cpumask_copy(desc->affinity, cpumask_of(cpu));
|
||||
get_irq_desc_chip(desc)->set_affinity(irq, cpumask_of(cpu));
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SMP */
|
||||
|
@ -67,6 +68,7 @@ show_interrupts(struct seq_file *p, void *v)
|
|||
int j;
|
||||
int irq = *(loff_t *) v;
|
||||
struct irqaction * action;
|
||||
struct irq_desc *desc;
|
||||
unsigned long flags;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -79,8 +81,13 @@ show_interrupts(struct seq_file *p, void *v)
|
|||
#endif
|
||||
|
||||
if (irq < ACTUAL_NR_IRQS) {
|
||||
raw_spin_lock_irqsave(&irq_desc[irq].lock, flags);
|
||||
action = irq_desc[irq].action;
|
||||
desc = irq_to_desc(irq);
|
||||
|
||||
if (!desc)
|
||||
return 0;
|
||||
|
||||
raw_spin_lock_irqsave(&desc->lock, flags);
|
||||
action = desc->action;
|
||||
if (!action)
|
||||
goto unlock;
|
||||
seq_printf(p, "%3d: ", irq);
|
||||
|
@ -90,7 +97,7 @@ show_interrupts(struct seq_file *p, void *v)
|
|||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j));
|
||||
#endif
|
||||
seq_printf(p, " %14s", irq_desc[irq].chip->name);
|
||||
seq_printf(p, " %14s", get_irq_desc_chip(desc)->name);
|
||||
seq_printf(p, " %c%s",
|
||||
(action->flags & IRQF_DISABLED)?'+':' ',
|
||||
action->name);
|
||||
|
@ -103,7 +110,7 @@ show_interrupts(struct seq_file *p, void *v)
|
|||
|
||||
seq_putc(p, '\n');
|
||||
unlock:
|
||||
raw_spin_unlock_irqrestore(&irq_desc[irq].lock, flags);
|
||||
raw_spin_unlock_irqrestore(&desc->lock, flags);
|
||||
} else if (irq == ACTUAL_NR_IRQS) {
|
||||
#ifdef CONFIG_SMP
|
||||
seq_puts(p, "IPI: ");
|
||||
|
@ -142,8 +149,10 @@ handle_irq(int irq)
|
|||
* handled by some other CPU. (or is disabled)
|
||||
*/
|
||||
static unsigned int illegal_count=0;
|
||||
struct irq_desc *desc = irq_to_desc(irq);
|
||||
|
||||
if ((unsigned) irq > ACTUAL_NR_IRQS && illegal_count < MAX_ILLEGAL_IRQS ) {
|
||||
if (!desc || ((unsigned) irq > ACTUAL_NR_IRQS &&
|
||||
illegal_count < MAX_ILLEGAL_IRQS)) {
|
||||
irq_err_count++;
|
||||
illegal_count++;
|
||||
printk(KERN_CRIT "device_interrupt: invalid interrupt %d\n",
|
||||
|
@ -159,7 +168,7 @@ handle_irq(int irq)
|
|||
* at IPL 0.
|
||||
*/
|
||||
local_irq_disable();
|
||||
generic_handle_irq(irq);
|
||||
generic_handle_irq_desc(irq, desc);
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue