Subject: Re: panics from lms driver
To: None <current-users@NetBSD.ORG>
From: Charles Hannum <mycroft@deshaw.com>
List: current-users
Date: 10/05/1995 22:09:26
In article <199510051851.NAA18349@pacific.urbana.mcd.mot.com>
drahn@pacific.urbana.mcd.mot.com (Dale Rahn) writes:

   On the port I was working on, spltty was 3 and spl for my driver was 4.

That's an interesting point.  I had thought the mouse interrupts were
run at spltty(), but they're not.  So there's a race between lmsread()
and lmsintr().

That said, here's a simple patch.  I'd appreciate it if someone who
was experiencing this problem could let me know whether or not this
fixes it.


Index: lms.c
===================================================================
RCS file: /a/cvsroot/src/sys/arch/i386/isa/lms.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -c -2 -r1.19 -r1.20
*** lms.c	1995/04/17 12:07:17	1.19
--- lms.c	1995/10/05 22:06:47	1.20
***************
*** 1,3 ****
! /*	$NetBSD: lms.c,v 1.19 1995/04/17 12:07:17 cgd Exp $	*/
  
  /*-
--- 1,3 ----
! /*	$NetBSD: lms.c,v 1.20 1995/10/05 22:06:47 mycroft Exp $	*/
  
  /*-
***************
*** 120,124 ****
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_PULSE, ISA_IPL_NONE,
  	    lmsintr, sc);
  }
--- 120,124 ----
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_PULSE, ISA_IPL_TTY,
  	    lmsintr, sc);
  }
Index: mms.c
===================================================================
RCS file: /a/cvsroot/src/sys/arch/i386/isa/mms.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -c -2 -r1.18 -r1.19
*** mms.c	1995/04/17 12:07:19	1.18
--- mms.c	1995/10/05 22:06:51	1.19
***************
*** 1,3 ****
! /*	$NetBSD: mms.c,v 1.18 1995/04/17 12:07:19 cgd Exp $	*/
  
  /*-
--- 1,3 ----
! /*	$NetBSD: mms.c,v 1.19 1995/10/05 22:06:51 mycroft Exp $	*/
  
  /*-
***************
*** 110,114 ****
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_PULSE, ISA_IPL_NONE,
  	    mmsintr, sc);
  }
--- 110,114 ----
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_PULSE, ISA_IPL_TTY,
  	    mmsintr, sc);
  }
Index: pms.c
===================================================================
RCS file: /a/cvsroot/src/sys/arch/i386/isa/pms.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -c -2 -r1.22 -r1.23
*** pms.c	1995/10/05 14:12:21	1.22
--- pms.c	1995/10/05 22:06:54	1.23
***************
*** 1,3 ****
! /*	$NetBSD: pms.c,v 1.22 1995/10/05 14:12:21 mycroft Exp $	*/
  
  /*-
--- 1,3 ----
! /*	$NetBSD: pms.c,v 1.23 1995/10/05 22:06:54 mycroft Exp $	*/
  
  /*-
***************
*** 193,197 ****
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_EDGE, ISA_IPL_NONE,
  	    pmsintr, sc);
  }
--- 193,197 ----
  	sc->sc_state = 0;
  
! 	sc->sc_ih = isa_intr_establish(ia->ia_irq, ISA_IST_EDGE, ISA_IPL_TTY,
  	    pmsintr, sc);
  }