Downloaded i810_audio.c v0.11 this morning. 
After loading it I'm getting system deadlock immediatelly after first attempt 
to use sound support as i810_write() calls i810_update_lvi() without setting
PCM_ENABLE_INPUT bit. Added setting this bit in i810_write() and
also some protection against deadlocks in __i810_update_lvi() with 
corresponding error message (see attached diffs).
Results: sound seems to work as far as I have tested for not a very long time.
I'm still getting messages that __i810_update_lvi() is called without setting
PCM_ENABLE_INPUT (which would cause deadlock without protection
I added there).
Andris
--------------Boundary-00=_44YYUVNPBHZARVSSAF64
Content-Type: text/x-diff;
  charset="iso-8859-13";
  name="i810_audio.c.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="i810_audio.c.diff"
--- i810_audio.c-0.11	Fri Dec  7 08:29:51 2001
+++ i810_audio.c	Fri Dec  7 11:28:32 2001
@@ -959,7 +959,11 @@
 		} else {
 			__start_dac(state);
 		}
-		while( !(inb(port + OFF_CR) & ((1<<4) | (1<<2))) ) ;
+		if (dmabuf->trigger & PCM_ENABLE_INPUT) {
+    			while( !(inb(port + OFF_CR) & ((1<<4) | (1<<2))) ) ;
+		} else {
+			printk (KERN_ERR "i810_audio: __i810_update_lvi called without setting PCM_ENABLE_INPUT\n");
+		}
 	}
 
 	/* swptr - 1 is the tail of our transfer */
@@ -1509,6 +1513,12 @@
 		x = dmabuf->fragsize - (swptr % dmabuf->fragsize);
 		memset(dmabuf->rawbuf + swptr, '\0', x);
 	}
+	// There is data waiting to be played
+	/*
+	 * Force the trigger setting since we would
+	 * deadlock with it set any other way
+	 */
+	dmabuf->trigger = PCM_ENABLE_OUTPUT;
 	i810_update_lvi(state,0);
 ret:
         set_current_state(TASK_RUNNING);
--------------Boundary-00=_44YYUVNPBHZARVSSAF64--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/