From owner-freebsd-multimedia Fri Sep 13 5:20:33 2002 Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B8C2537B400 for ; Fri, 13 Sep 2002 05:20:17 -0700 (PDT) Received: from webmail1.rockefeller.edu (webmail1.rockefeller.edu [129.85.249.101]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5499443E72 for ; Fri, 13 Sep 2002 05:20:12 -0700 (PDT) (envelope-from rsidd@lpt.ens.fr) Received: from bluerondo.a.la.turk (gendialup9.rockefeller.edu [129.85.131.108]) by webmail1.rockefeller.edu (Switch-2.2.4/Switch-2.2.0) with ESMTP id g8DCJxw07262 for ; Fri, 13 Sep 2002 08:20:00 -0400 (EDT) Received: (qmail 405 invoked by uid 1001); 13 Sep 2002 12:17:04 -0000 Date: Fri, 13 Sep 2002 08:17:04 -0400 From: Rahul Siddharthan To: Julian Elischer Cc: stable@freebsd.org, multimedia@freebsd.org Subject: Re: USB audio kernel panics Message-ID: <20020913121704.GA286@papagena.rockefeller.edu> References: <20020913025715.GA9795@papagena.rockefeller.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.27i X-Operating-System: FreeBSD 4.7-PRERELEASE i386 Sender: owner-freebsd-multimedia@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Julian Elischer said on Sep 12, 2002 at 20:36:53: > > I notice that the USB audio driver has been imported into -STABLE > > recently. I've been using this driver for a few months, and get > > frequent easily-reproducible kernel panics, which unfortunately I don't > > have the ability to fix -- but I really don't think the driver is ready > > for -stable or for 4.7-release. > > > > [...] > can you do a 'list' here? > as well as "info locals" and > print anything that looks suspicious? I don't know what looks suspicious, but here's the whole lot below -- first for the panic I quoted (pulling out the USB cord while busy), then for a different panic (starting the KDE artsd daemon). Thanks, I'd definitely like to see this fixed (and if recording capabilities are added too, I can finally quit rebooting into linux) Rahul ------------------ First, for what I sent earlier: pulling out the USB cord ------------------ #16 0xc0235813 in uhci_device_isoc_start (xfer=0xc100d300) at /usr/src/sys/dev/usb/uhci.c:2097 2097 LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list); (kgdb) list 2092 if (!ii->isdone) { 2093 printf("uhci_device_isoc_start: not done, ii=%p\n", ii); 2094 } 2095 ii->isdone = 0; 2096 #endif 2097 LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list); 2098 2099 splx(s); 2100 2101 return (USBD_IN_PROGRESS); (kgdb) info locals upipe = (struct uhci_pipe *) 0x0 sc = (uhci_softc_t *) 0xc0f9c200 ii = (uhci_intr_info_t *) 0xc0fae8c0 end = (uhci_soft_td_t *) 0x68c840 s = 6867008 i = 0 (kgdb) up #17 0xc023568f in uhci_device_isoc_transfer (xfer=0xc100d400) at /usr/src/sys/dev/usb/uhci.c:1991 1991 uhci_device_isoc_start(SIMPLEQ_FIRST(&xfer->pipe->queue)); (kgdb) list 1986 /* insert into schedule, */ 1987 uhci_device_isoc_enter(xfer); 1988 1989 /* and put on interrupt list if the pipe wasn't running */ 1990 if (!err) 1991 uhci_device_isoc_start(SIMPLEQ_FIRST(&xfer->pipe->queue)); 1992 1993 return (err); 1994 } 1995 (kgdb) info locals xfer = 0xc100d400 err = USBD_NORMAL_COMPLETION (kgdb) up #18 0xc023a035 in usbd_transfer (xfer=0xc100d400) at /usr/src/sys/dev/usb/usbdi.c:285 285 err = pipe->methods->transfer(xfer); (kgdb) list 280 /* Copy data if going out. */ 281 if (!(xfer->flags & USBD_NO_COPY) && size != 0 && 282 !usbd_xfer_isread(xfer)) 283 memcpy(KERNADDR(dmap, 0), xfer->buffer, size); 284 285 err = pipe->methods->transfer(xfer); 286 287 if (err != USBD_IN_PROGRESS && err) { 288 /* The transfer has not been queued, so free buffer. */ 289 if (xfer->rqflags & URQ_AUTO_DMABUF) { (kgdb) info locals xfer = 0xc100d400 pipe = 0xc100d200 dmap = (usb_dma_t *) 0xc100d43c err = 3228685332 size = 0 s = -1058332080 ----------------- Below, a panic generated by starting up KDE's artsd while the USB device is plugged in securely. ----------------- #16 0xc029bb93 in trap (frame={tf_fs = 6815760, tf_es = -1056571376, tf_ds = 16, tf_edi = 1, tf_esi = -1056113184, tf_ebp = -1070635404, tf_isp = -1070635452, tf_ebx = -1056138112, tf_edx = 125511200, tf_ecx = -846746112, tf_eax = 2, tf_trapno = 12, tf_err = 0, tf_eip = -1071429335, tf_cs = 8, tf_eflags = 66050, tf_esp = -1057941184, tf_ss = -1056113184}) at /usr/src/sys/i386/i386/trap.c:466 466 (void) trap_pfault(&frame, FALSE, eva); (kgdb) up #17 0xc0234929 in uhci_idone (ii=0xc10cfde0) at /usr/src/sys/dev/usb/uhci.c:1129 1129 for (std = ii->stdstart; std != NULL; std = std->link.std) { (kgdb) list 1124 uhci_dump_tds(ii->stdstart); 1125 #endif 1126 1127 /* The transfer is done, compute actual length and status. */ 1128 actlen = 0; 1129 for (std = ii->stdstart; std != NULL; std = std->link.std) { 1130 nstatus = LE(std->td.td_status); 1131 if (nstatus & UHCI_TD_ACTIVE) 1132 break; 1133 (kgdb) info locals xfer = 0x68c840 upipe = (struct uhci_pipe *) 0x0 std = (uhci_soft_td_t *) 0x0 status = 1 nstatus = 0 actlen = 194 (kgdb) up #18 0xc0234864 in uhci_check_intr (sc=0xc0ebb000, ii=0xc10cfde0) at /usr/src/sys/dev/usb/uhci.c:1057 1057 uhci_idone(ii); (kgdb) list 1052 return; 1053 } 1054 done: 1055 1056 usb_untimeout(uhci_timeout, ii, ii->timeout_handle); 1057 uhci_idone(ii); 1058 } 1059 1060 /* Called at splusb() */ 1061 void (kgdb) info locals ii = (uhci_intr_info_t *) 0xc10cfde0 std = (uhci_soft_td_t *) 0x0 lstd = (uhci_soft_td_t *) 0xc0f11940 status = 0 (kgdb) up #19 0xc02347cf in uhci_intr (arg=0xc0ebb000) at /usr/src/sys/dev/usb/uhci.c:994 994 uhci_check_intr(sc, ii); (kgdb) list 989 * output on a slow console). 990 * We scan all interrupt descriptors to see if any have 991 * completed. 992 */ 993 for (ii = LIST_FIRST(&sc->sc_intrhead); ii; ii = LIST_NEXT(ii, list)) 994 uhci_check_intr(sc, ii); 995 996 DPRINTFN(10, ("%s: uhci_intr: exit\n", USBDEVNAME(sc->sc_bus.bdev))); 997 998 sc->sc_bus.intr_context--; (kgdb) info locals sc = (uhci_softc_t *) 0xc0ebb000 status = -1056113184 ack = 1 ii = (uhci_intr_info_t *) 0xc10cfde0 (kgdb) up #20 0xc02a6c2d in intr_mux (arg=0xc0714180) at /usr/src/sys/i386/isa/intr_machdep.c:582 582 p->handler(p->argument); (kgdb) list 577 intrec *p; 578 intrmask_t oldspl; 579 580 for (p = arg; p != NULL; p = p->next) { 581 oldspl = splq(p->mask); 582 p->handler(p->argument); 583 splx(oldspl); 584 } 585 } 586 (kgdb) info locals p = (intrec *) 0xc0714180 oldspl = 4196352 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-multimedia" in the body of the message