NetBSD-Bugs archive

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

re: kern/46791: eso(4) kernel panic while booting -current



can you try this untested patch?  thanks.

.mrg.


Index: sys/dev/pci/eso.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/eso.c,v
retrieving revision 1.60
diff -p -r1.60 eso.c
*** sys/dev/pci/eso.c   15 May 2012 18:11:28 -0000      1.60
--- sys/dev/pci/eso.c   11 Aug 2012 19:19:53 -0000
*************** eso_attach(device_t parent, device_t sel
*** 267,272 ****
--- 267,275 ----
        pa = aux;
        aprint_naive(": Audio controller\n");
  
+       mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
+       mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_AUDIO);
+ 
        sc->sc_revision = PCI_REVISION(pa->pa_class);
        aprint_normal(": ESS Solo-1 PCI AudioDrive ");
        if (sc->sc_revision <
*************** eso_attach(device_t parent, device_t sel
*** 329,334 ****
--- 332,339 ----
            ESO_IO_IRQCTL_A1IRQ | ESO_IO_IRQCTL_A2IRQ | ESO_IO_IRQCTL_HVIRQ |
            ESO_IO_IRQCTL_MPUIRQ);
  
+       mutex_spin_enter(&sc->sc_intr_lock);
+ 
        /* Set up A1's sample rate generator for new-style parameters. */
        a2mode = eso_read_mixreg(sc, ESO_MIXREG_A2MODE);
        a2mode |= ESO_MIXREG_A2MODE_NEWA1 | ESO_MIXREG_A2MODE_ASYNC;
*************** eso_attach(device_t parent, device_t sel
*** 340,345 ****
--- 345,352 ----
        mvctl |= ESO_MIXREG_MVCTL_HVIRQM;
        eso_write_mixreg(sc, ESO_MIXREG_MVCTL, mvctl);
  
+       mutex_spin_exit(&sc->sc_intr_lock);
+ 
        /* Set mixer regs to something reasonable, needs work. */
        sc->sc_recmon = sc->sc_spatializer = sc->sc_mvmute = 0;
        eso_set_monooutsrc(sc, ESO_MIXREG_MPM_MOMUTE);
*************** eso_attach(device_t parent, device_t sel
*** 381,389 ****
                return;
        }
  
-       mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
-       mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_AUDIO);
- 
        intrstring = pci_intr_string(pa->pa_pc, ih);
        sc->sc_ih  = pci_intr_establish(pa->pa_pc, ih, IPL_AUDIO, eso_intr, sc);
        if (sc->sc_ih == NULL) {
--- 388,393 ----


Home | Main Index | Thread Index | Old Index