[parisc-linux-cvs] call do_softirq()

Paul Bame bame@fc.hp.com
Fri, 06 Jul 2001 15:01:21 -0600


I noticed powerpc was calling do_softirq() from both the timer
and the general interrupt handler.  When we do the same thing, a
64-bit 2.4.6 kernel boots to init 2 and works pretty well though
obvious problems remain.

? arch/parisc/kernel/gg
Index: Makefile
===================================================================
RCS file: /home/cvs/parisc/linux/Makefile,v
retrieving revision 1.84
diff -u -r1.84 Makefile
--- Makefile	2001/07/05 21:55:24	1.84
+++ Makefile	2001/07/06 20:58:26
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 6
-EXTRAVERSION = -pa1
+EXTRAVERSION = -pa2
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
Index: arch/parisc/kernel/head64.S
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/head64.S,v
retrieving revision 1.4
diff -u -r1.4 head64.S
--- head64.S	2001/07/05 21:33:26	1.4
+++ head64.S	2001/07/06 20:58:26
@@ -24,7 +24,7 @@
 #include <asm/pdc.h>		/* for PDC_PSW defines */
 
 
-	/* .level 2.0 */
+	.level 2.0
 
 	.section	.initcall.init
 	.align		4
Index: arch/parisc/kernel/irq.c
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/irq.c,v
retrieving revision 1.39
diff -u -r1.39 irq.c
--- irq.c	2001/06/12 16:09:52	1.39
+++ irq.c	2001/07/06 20:58:26
@@ -383,6 +383,9 @@
 	}
 
 	irq_exit(cpu, irq);
+
+	if (softirq_pending(cpu))
+		do_softirq();
 }
 
 
Index: arch/parisc/kernel/time.c
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/time.c,v
retrieving revision 1.11
diff -u -r1.11 time.c
--- time.c	2001/04/06 05:10:54	1.11
+++ time.c	2001/07/06 20:58:26
@@ -75,6 +75,9 @@
 #ifdef CONFIG_CHASSIS_LCD_LED
 	led_interrupt_func();
 #endif
+
+	if (softirq_pending(smp_processor_id()))
+		do_softirq();
 }
 
 /*** converted from ia64 ***/