projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6
[powerpc.git]
/
arch
/
alpha
/
kernel
/
irq.c
diff --git
a/arch/alpha/kernel/irq.c
b/arch/alpha/kernel/irq.c
index
9006063
..
63af36c
100644
(file)
--- a/
arch/alpha/kernel/irq.c
+++ b/
arch/alpha/kernel/irq.c
@@
-49,15
+49,15
@@
select_smp_affinity(unsigned int irq)
static int last_cpu;
int cpu = last_cpu + 1;
static int last_cpu;
int cpu = last_cpu + 1;
- if (!irq_desc[irq].
handler
->set_affinity || irq_user_affinity[irq])
+ if (!irq_desc[irq].
chip
->set_affinity || irq_user_affinity[irq])
return 1;
while (!cpu_possible(cpu))
cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0);
last_cpu = cpu;
return 1;
while (!cpu_possible(cpu))
cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0);
last_cpu = cpu;
- irq_
affinity[irq]
= cpumask_of_cpu(cpu);
- irq_desc[irq].
handler
->set_affinity(irq, cpumask_of_cpu(cpu));
+ irq_
desc[irq].affinity
= cpumask_of_cpu(cpu);
+ irq_desc[irq].
chip
->set_affinity(irq, cpumask_of_cpu(cpu));
return 0;
}
#endif /* CONFIG_SMP */
return 0;
}
#endif /* CONFIG_SMP */
@@
-93,7
+93,7
@@
show_interrupts(struct seq_file *p, void *v)
for_each_online_cpu(j)
seq_printf(p, "%10u ", kstat_cpu(j).irqs[irq]);
#endif
for_each_online_cpu(j)
seq_printf(p, "%10u ", kstat_cpu(j).irqs[irq]);
#endif
- seq_printf(p, " %14s", irq_desc[irq].
handler
->typename);
+ seq_printf(p, " %14s", irq_desc[irq].
chip
->typename);
seq_printf(p, " %c%s",
(action->flags & SA_INTERRUPT)?'+':' ',
action->name);
seq_printf(p, " %c%s",
(action->flags & SA_INTERRUPT)?'+':' ',
action->name);
@@
-151,8
+151,13
@@
handle_irq(int irq, struct pt_regs * regs)
}
irq_enter();
}
irq_enter();
+ /*
+ * __do_IRQ() must be called 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();
__do_IRQ(irq, regs);
local_irq_disable();
__do_IRQ(irq, regs);
- local_irq_enable();
irq_exit();
}
irq_exit();
}