aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-10-06 14:08:57 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-06 14:08:57 -0400
commit428929a234d2c4b8a6d0145d0dcf687fcfa27325 (patch)
treedd097eeabbd41c4713be5ea7663f52399183fd84 /arch
parent0cd61b68c340a4f901a06e8bb5e0dea4353161c0 (diff)
parent8c1addbc752660e95bbf2128d66b8e5bb38d5fc7 (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] Fix breakage from irq change
Diffstat (limited to 'arch')
-rw-r--r--arch/ia64/kernel/irq.c5
-rw-r--r--arch/ia64/kernel/irq_ia64.c7
-rw-r--r--arch/ia64/sn/kernel/sn2/timer_interrupt.c2
3 files changed, 10 insertions, 4 deletions
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 7852382de2fa..f07c0864b0b4 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -194,8 +194,11 @@ void fixup_irqs(void)
194 */ 194 */
195 for (irq=0; irq < NR_IRQS; irq++) { 195 for (irq=0; irq < NR_IRQS; irq++) {
196 if (vectors_in_migration[irq]) { 196 if (vectors_in_migration[irq]) {
197 struct pt_regs *old_regs = set_irq_regs(NULL);
198
197 vectors_in_migration[irq]=0; 199 vectors_in_migration[irq]=0;
198 __do_IRQ(irq, NULL); 200 __do_IRQ(irq);
201 set_irq_regs(old_regs);
199 } 202 }
200 } 203 }
201 204
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 7fd3ef9e064d..68339dd0c9e2 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void)
226 */ 226 */
227 while (vector != IA64_SPURIOUS_INT_VECTOR) { 227 while (vector != IA64_SPURIOUS_INT_VECTOR) {
228 if (!IS_RESCHEDULE(vector)) { 228 if (!IS_RESCHEDULE(vector)) {
229 struct pt_regs *old_regs = set_irq_regs(NULL);
230
229 ia64_setreg(_IA64_REG_CR_TPR, vector); 231 ia64_setreg(_IA64_REG_CR_TPR, vector);
230 ia64_srlz_d(); 232 ia64_srlz_d();
231 233
@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void)
236 * Probably could shared code. 238 * Probably could shared code.
237 */ 239 */
238 vectors_in_migration[local_vector_to_irq(vector)]=0; 240 vectors_in_migration[local_vector_to_irq(vector)]=0;
239 __do_IRQ(local_vector_to_irq(vector), NULL); 241 __do_IRQ(local_vector_to_irq(vector));
242 set_irq_regs(old_regs);
240 243
241 /* 244 /*
242 * Disable interrupts and send EOI 245 * Disable interrupts and send EOI
@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void)
253 256
254 257
255#ifdef CONFIG_SMP 258#ifdef CONFIG_SMP
256extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); 259extern irqreturn_t handle_IPI (int irq, void *dev_id);
257 260
258static struct irqaction ipi_irqaction = { 261static struct irqaction ipi_irqaction = {
259 .handler = handle_IPI, 262 .handler = handle_IPI,
diff --git a/arch/ia64/sn/kernel/sn2/timer_interrupt.c b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
index fa7f69945917..103d6ea8e94b 100644
--- a/arch/ia64/sn/kernel/sn2/timer_interrupt.c
+++ b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
36 36
37#define SN_LB_INT_WAR_INTERVAL 100 37#define SN_LB_INT_WAR_INTERVAL 100
38 38
39void sn_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 39void sn_timer_interrupt(int irq, void *dev_id)
40{ 40{
41 /* LED blinking */ 41 /* LED blinking */
42 if (!pda->hb_count--) { 42 if (!pda->hb_count--) {