git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[pandora-kernel.git]
/
arch
/
alpha
/
kernel
/
irq.c
diff --git
a/arch/alpha/kernel/irq.c
b/arch/alpha/kernel/irq.c
index
fe91298
..
9ab234f
100644
(file)
--- a/
arch/alpha/kernel/irq.c
+++ b/
arch/alpha/kernel/irq.c
@@
-44,10
+44,11
@@
static char irq_user_affinity[NR_IRQS];
int irq_select_affinity(unsigned int irq)
{
int irq_select_affinity(unsigned int irq)
{
+ struct irq_desc *desc = irq_to_desc[irq];
static int last_cpu;
int cpu = last_cpu + 1;
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) ||
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;
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 */
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;
int j;
int irq = *(loff_t *) v;
struct irqaction * action;
+ struct irq_desc *desc;
unsigned long flags;
#ifdef CONFIG_SMP
unsigned long flags;
#ifdef CONFIG_SMP
@@
-79,8
+81,13
@@
show_interrupts(struct seq_file *p, void *v)
#endif
if (irq < ACTUAL_NR_IRQS) {
#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);
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
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);
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:
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: ");
} 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;
* 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",
irq_err_count++;
illegal_count++;
printk(KERN_CRIT "device_interrupt: invalid interrupt %d\n",
@@
-151,14
+160,14
@@
handle_irq(int irq)
return;
}
return;
}
- irq_enter();
/*
/*
- *
__do_IRQ() must be call
ed with IPL_MAX. Note that we do not
+ *
From here we must proce
ed with IPL_MAX. Note that we do not
* explicitly enable interrupts afterwards - some MILO PALcode
* (namely LX164 one) seems to have severe problems with RTI
* at IPL 0.
*/
local_irq_disable();
* explicitly enable interrupts afterwards - some MILO PALcode
* (namely LX164 one) seems to have severe problems with RTI
* at IPL 0.
*/
local_irq_disable();
- __do_IRQ(irq);
+ irq_enter();
+ generic_handle_irq_desc(irq, desc);
irq_exit();
}
irq_exit();
}