From owner-freebsd-usb@FreeBSD.ORG Tue May 12 16:52:47 2009 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5AC72106566B for ; Tue, 12 May 2009 16:52:47 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe04.swip.net [212.247.154.97]) by mx1.freebsd.org (Postfix) with ESMTP id 7C4CE8FC16 for ; Tue, 12 May 2009 16:52:46 +0000 (UTC) (envelope-from hselasky@c2i.net) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=j+k/Ze5hWUCaCztCgEjzDQ==:17 a=5ZE50VWpAAAA:8 a=C10Ik_IzPETUoCFQCvcA:9 a=dUDoGX0R8fsMdM8FZdEA:7 a=EJH9RtdDq0-_K7Hc6rfenw3uSjUA:4 a=jGYXrj7kSE0T3Q1W:21 a=FhpE7M40QBRrq_IO:21 Received: from [81.191.55.181] (account mc467741@c2i.net HELO laptop) by mailfe04.swip.net (CommuniGate Pro SMTP 5.2.13) with ESMTPA id 1239998136; Tue, 12 May 2009 18:52:44 +0200 From: Hans Petter Selasky To: freebsd-usb@freebsd.org Date: Tue, 12 May 2009 18:55:18 +0200 User-Agent: KMail/1.9.7 References: <1242146062.5455.60.camel@buffy.york.ac.uk> In-Reply-To: <1242146062.5455.60.camel@buffy.york.ac.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200905121855.19123.hselasky@c2i.net> Cc: Gavin Atkinson Subject: Re: USB panic on 8.0/arm X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 May 2009 16:52:47 -0000 On Tuesday 12 May 2009, Gavin Atkinson wrote: > Hi all, > > I have an NSLU2, which I am netbooting. I've been doing most of my work > on it with USB removed from the kernel because the old stack would > always panic. I've recently been trying the new USB stack, and have > found that it still panics most of the time on boot. But not all the > time. > > Firstly, please note that the version of Linux that was installed onto > this hardware when I got it (not the factory installed OS, though) also > seems to have problems most of the time with the USB controller, so I > guess there is a chance that this is a hardware problem. > > That said, here are the symptoms: No USB in kernel, boots fine every > time. > > New USB stack in the kernel: Just once, I've seen it probe and attach > just fine. Here's proof: > > [snip] > real memory = 33554432 (32 MB) > avail memory = 25829376 (24 MB) > ixp0: on motherboard > ixp0: 37603 > pcib0: on ixp0 > pci0: on pcib0 > ohci0: irq 28 at device 1.0 on pci0 > ohci0: [ITHREAD] > usbus0: on ohci0 > ohci1: irq 27 at device 1.1 on pci0 > ohci1: [ITHREAD] > usbus1: on ohci1 > ehci0: irq 26 at device 1.2 on pci0 > ehci0: [ITHREAD] > usbus2: EHCI version 1.0 > usbus2: on ehci0 > ixpclk0: on ixp0 > [snip] > > Every other time I've booted with USB compiled in, I'll get a panic: > > RedBoot> go > KDB: debugger backends: ddb > KDB: current backend: ddb > Copyright (c) 1992-2009 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > The Regents of the University of California. All rights reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 8.0-CURRENT #5: Fri May 8 16:28:01 BST 2009 > root@buffy.york.ac.uk:/usr/obj/arm/usr/src-test/sys/NSLU > CPU: IXP425 266MHz rev 1 (ARMv5TE) (XScale core) > DC enabled IC enabled WB enabled LABT branch prediction enabled > 32KB/32B 32-way Instruction cache > 32KB/32B 32-way write-back-locking Data cache > real memory = 33554432 (32 MB) > avail memory = 25829376 (24 MB) > ixp0: on motherboard > ixp0: 37603 > pcib0: on ixp0 > pci0: on pcib0 > ohci0: irq 28 at device 1.0 on pci0 > ohci0: [ITHREAD] > Fatal kernel mode data abort: 'External Linefetch Abort (P)' > trapframe: 0xc00fbafc > FSR=00000406, FAR=Invalid, spsr=600000d3 > r0 =c0ae4000, r1 =f8000000, r2 =00000034, r3 =c0ae407c > r4 =00001270, r5 =00001278, r6 =00001274, r7 =00000003 > r8 =00001140, r9 =c0ae5000, r10=00001140, r11=c00fbb88 > r12=c0ae407c, ssp=c00fbb48, slr=c023c14c, pc =c023c148 > > [thread pid 0 tid 100000 ] > Stopped at ohci_suspend+0x140c: ldr r15, [r3, #0x024] > db> bt > Tracing pid 0 tid 100000 td 0xc04fd110 > db_trace_thread() at db_trace_thread+0xc > scp=0xc041ee94 rlv=0xc0213778 (db_command_init+0x4c8) > rsp=0xc00fb7f4 rfp=0xc00fb810 > r10=0x00000001 r9=0xc0503bd8 > r8=0xc04fa75c r7=0x00000062 r6=0x00000002 r5=0x00000010 > r4=0xc04fd110 > db_command_init() at db_command_init+0x3f0 > scp=0xc02136a0 rlv=0xc0213008 (db_skip_to_eol+0x49c) > rsp=0xc00fb814 rfp=0xc00fb8b8 > r5=0x00000000 r4=0xc04cf0c0 > db_skip_to_eol() at db_skip_to_eol+0x1d0 > scp=0xc0212d3c rlv=0xc0213174 (db_command_loop+0x60) > rsp=0xc00fb8bc rfp=0xc00fb8c8 > r10=0x00000000 r8=0x00000406 > r7=0xc00fbafc r6=0xc0503bd0 r5=0x600000d3 r4=0xc00fb8d4 > db_command_loop() at db_command_loop+0xc > scp=0xc0213120 rlv=0xc02153b0 (X_db_sym_numargs+0xf4) > rsp=0xc00fb8cc rfp=0xc00fb9e8 > X_db_sym_numargs() at X_db_sym_numargs+0x14 > scp=0xc02152d0 rlv=0xc02cf8e8 (kdb_trap+0xa4) > rsp=0xc00fb9ec rfp=0xc00fba14 > r4=0x000000c0 > kdb_trap() at kdb_trap+0xc > scp=0xc02cf850 rlv=0xc042e844 (badaddr_read+0x280) > rsp=0xc00fba18 rfp=0xc00fba34 > r10=0xc00fbef8 r9=0x00000000 > r8=0xc00fbafc r7=0x00000406 r6=0x00000000 r5=0x00000406 > r4=0xc00fbafc > badaddr_read() at badaddr_read+0xfc > scp=0xc042e6c0 rlv=0xc042ec08 (prefetch_abort_handler+0x36c) > rsp=0xc00fba38 rfp=0xc00fba58 > r6=0xc04fd110 r5=0xc00fbef8 > r4=0xc00fbafc > prefetch_abort_handler() at prefetch_abort_handler+0x2a4 > scp=0xc042eb40 rlv=0xc042edd4 (data_abort_handler+0x110) > rsp=0xc00fba5c rfp=0xc00fbaf8 > r7=0xc04fd110 r6=0x00001274 > r5=0xffff1004 r4=0xc05189ec > data_abort_handler() at data_abort_handler+0xc > scp=0xc042ecd0 rlv=0xc04208dc (address_exception_entry+0x50) > rsp=0xc00fbafc rfp=0xc00fbb88 > r10=0x00001140 r9=0xc0ae5000 > r8=0x00001140 r7=0x00000003 r6=0x00001274 r5=0xffff1004 > r4=0x01070000 > ohci_suspend() at ohci_suspend+0x1138 > scp=0xc023be74 rlv=0xc023ccc0 (ohci_init+0x208) > rsp=0xc00fbb8c rfp=0xc00fbbc4 > r10=0x00001140 r9=0x00000006 > r8=0x00001140 r7=0xc0ae5aa0 r6=0x00000000 r5=0xc0ae5000 > r4=0x00000000 > ohci_init() at ohci_init+0xc > scp=0xc023cac4 rlv=0xc023e6ac (ohci_interrupt+0x1990) > rsp=0xc00fbbc8 rfp=0xc00fbc00 > r10=0xc0ae5aa0 r9=0x00000009 > r8=0xc0a9ee80 r7=0xc0ae5000 r6=0x00001154 r5=0x00001150 > r4=0x00001268 > ohci_interrupt() at ohci_interrupt+0x1380 > scp=0xc023e09c rlv=0xc02c9fb0 (device_attach+0x2c8) > rsp=0xc00fbc04 rfp=0xc00fbc40 > r10=0xc0a9ee80 r8=0xffffffff > r7=0xc02c8640 r6=0xc0a9eecc r5=0x80000000 r4=0xc0ae2000 > device_attach() at device_attach+0xc > scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34) > rsp=0xc00fbc44 rfp=0xc00fbc54 > r10=0xc0ae2000 r8=0xffffffff > r7=0xc02c8640 r6=0x00000000 r5=0x00000000 r4=0xc0a9ee80 > device_probe_and_attach() at device_probe_and_attach+0xc > scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20) > rsp=0xc00fbc58 rfp=0xc00fbc68 > r4=0xc0a9ee80 > bus_generic_attach() at bus_generic_attach+0xc > scp=0xc02cacdc rlv=0xc022a190 (pci_add_children+0x240) > rsp=0xc00fbc6c rfp=0xc00fbc8c > r4=0xc0ae2000 > pci_add_children() at pci_add_children+0x154 > scp=0xc022a0a4 rlv=0xc02c9fb0 (device_attach+0x2c8) > rsp=0xc00fbc90 rfp=0xc00fbccc > r6=0xc0ae204c r5=0x80000000 > r4=0xc0a9d380 > device_attach() at device_attach+0xc > scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34) > rsp=0xc00fbcd0 rfp=0xc00fbce0 > r10=0xc0a9d380 r8=0xffffffff > r7=0xc02c8640 r6=0xc0a9d380 r5=0xc0ae4000 r4=0xc0ae2000 > device_probe_and_attach() at device_probe_and_attach+0xc > scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20) > rsp=0xc00fbce4 rfp=0xc00fbcf4 > r4=0xc0ae2000 > bus_generic_attach() at bus_generic_attach+0xc > scp=0xc02cacdc rlv=0xc0433f50 (cpu_initclocks+0x1104) > rsp=0xc00fbcf8 rfp=0xc00fbd40 > r4=0xffffffff > cpu_initclocks() at cpu_initclocks+0xe3c > scp=0xc0433c88 rlv=0xc02c9fb0 (device_attach+0x2c8) > rsp=0xc00fbd44 rfp=0xc00fbd80 > r6=0xc0a9d3cc r5=0x80000000 > r4=0xc0a9d500 > device_attach() at device_attach+0xc > scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34) > rsp=0xc00fbd84 rfp=0xc00fbd94 > r10=0xc0a9d500 r8=0xffffffff > r7=0xc02c8640 r6=0xc0a9d500 r5=0xc0a9d480 r4=0xc0a9d380 > device_probe_and_attach() at device_probe_and_attach+0xc > scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20) > rsp=0xc00fbd98 rfp=0xc00fbda8 > r4=0xc0a9d380 > bus_generic_attach() at bus_generic_attach+0xc > scp=0xc02cacdc rlv=0xc0432be0 (arm_unmask_irq+0x894) > rsp=0xc00fbdac rfp=0xc00fbdec > r4=0xc0a9d500 > arm_unmask_irq() at arm_unmask_irq+0x534 > scp=0xc0432880 rlv=0xc02c9fb0 (device_attach+0x2c8) > rsp=0xc00fbdf0 rfp=0xc00fbe2c > r6=0xc0a9d54c r5=0x80000000 > r4=0xc0a9d680 > device_attach() at device_attach+0xc > scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34) > rsp=0xc00fbe30 rfp=0xc00fbe40 > r10=0xc0a9d680 r8=0xffffffff > r7=0xc02c8640 r6=0xc0a9d6cc r5=0x80000000 r4=0xc0a9d500 > device_probe_and_attach() at device_probe_and_attach+0xc > scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20) > rsp=0xc00fbe44 rfp=0xc00fbe54 > r4=0xc0a9d500 > bus_generic_attach() at bus_generic_attach+0xc > scp=0xc02cacdc rlv=0xc0423594 (minidumpsys+0xb18) > rsp=0xc00fbe58 rfp=0xc00fbe68 > r4=0xc0a9d680 > minidumpsys() at minidumpsys+0xb08 > scp=0xc0423584 rlv=0xc02c9fb0 (device_attach+0x2c8) > rsp=0xc00fbe6c rfp=0xc00fbea8 > r4=0xc048f730 > device_attach() at device_attach+0xc > scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34) > rsp=0xc00fbeac rfp=0xc00fbebc > r10=0x0000000a r8=0x00000000 > r7=0x00200198 r6=0x00000006 r5=0x002001a4 r4=0xc0a9d680 > device_probe_and_attach() at device_probe_and_attach+0xc > scp=0xc02cabd8 rlv=0xc02cac2c (root_bus_configure+0x28) > rsp=0xc00fbec0 rfp=0xc00fbed0 > r4=0xc0a9d680 > root_bus_configure() at root_bus_configure+0xc > scp=0xc02cac10 rlv=0xc0419e48 (xdr_sizeof+0x1d0) > rsp=0xc00fbed4 rfp=0xc00fbee0 > r4=0xc0491d3c > xdr_sizeof() at xdr_sizeof+0x1cc > scp=0xc0419e44 rlv=0xc0274d28 (mi_startup+0xdc) > rsp=0xc00fbee4 rfp=0xc00fbef4 > mi_startup() at mi_startup+0xc > scp=0xc0274c58 rlv=0xc020023c (btext+0x13c) > rsp=0xc00fbef8 rfp=0x00000000 > r4=0x0020027c > db> > > Any suggestions as to what I can test or how I can get any useful > information? > In : src/sys/dev/usb/controller/ohci_pci.c Can you try to move the pci busmaster enable call further down in the attach routine, until the I/O resources are setup, then add before enable busmaster: #define OBARR(sc) bus_space_barrier((sc)->sc_io_tag, (sc)->sc_io_hdl, 0, (sc)->sc_io_size, \ BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE) #define OWRITE1(sc, r, x) \ do { OBARR(sc); bus_space_write_1((sc)->sc_io_tag, (sc)->sc_io_hdl, (r), (x)); } while (0) OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_HCR); /* Reset HC */ I'm not sure if it helps. It's just a guess. --HPS