Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] DVB-S interrupt nesting



HI

I did small experiment with the interrupts.
Instead of clearing DVB isr register immediately
after reading, I change the code to clear isr after 
processing of the interrupt handler.

I wanted to prevent dvb from making nested interrupts
before dvb interrupt handler finishes its job.
so applied this patch...

Well, Budget worked with this patch, 
but DVB-S crashed immediately with oops saying
'scheduling inside the interrupt'.


--- /usr/local/src/dvb/stable/DVB/driver/av7110/saa7146_core.c	Tue Nov 26 22:00:04 2002
+++ DVB/driver/av7110/saa7146_core.c	Mon Dec 30 21:44:33 2002
@@ -418,9 +418,6 @@
 
 		/* read out the primary status register */
 		isr = saa7146_read(saa->mem, ISR);
-		/* clear all IRQs */
-		saa7146_write(saa->mem, ISR, isr);
-	
 		/* is anything to do? */
 		if ( 0 == isr )
 			return;
@@ -435,6 +432,9 @@
 			  //saa7146_write(saa->mem, ISR, saa7146_ext[i]->handles_irqs);
 			}
 		
+		/* clear all IRQs */
+		saa7146_write(saa->mem, ISR, isr);
+	
 		//printk(KERN_ERR "%s: unhandled interrupt: 0x%08x\n", saa->name, isr);
 		
 		/* see if we are in a hard interrupt loop */


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index