Re: kernel panic - panic: ehci_device_clear_toggle: queue active
On Thu 03/12/2015 09:54, Martin Pieuchot wrote: > On 30/11/15(Mon) 18:28, Björn Ketelaars wrote: > > Hello, > > > > I repeatedly hit the kernel panic below. Easy to reproduce as it happens > > over > > and over again within 60 minutes after rebooting. Root cause is not known. > > > > I'm running snapshot on an USB stick. I tried different USB ports with the > > same > > result. Next step will be an attempt with a different USB stick. > > > > I think this issue has been mentioned before: > > > > https://marc.info/?t=14184059141&r=1&w=3 > > http://openbsd-archive.7691.n7.nabble.com/panic-ehci-device-clear-toggle-queue-active-td231729.html > > http://article.gmane.org/gmane.os.openbsd.bugs/19812/ > > > > Any ideas on how to tackle this issue? > > You can try the diff below and tell me if it helps. > > Index: ehci.c > === > RCS file: /cvs/src/sys/dev/usb/ehci.c,v > retrieving revision 1.187 > diff -u -p -r1.187 ehci.c > --- ehci.c26 Jun 2015 11:17:34 - 1.187 > +++ ehci.c14 Oct 2015 14:24:19 - > Yes, it helps! I build and installed a new kernel using your diff and tested it with a couple of USB-sticks on different USB-ports. No panics... Reverting to an old (unpatched) kernel, using the above routine, soon resulted in a hang. I'm currently running a kernel with your diff. As stated: it helps. Thanks!
Re: kernel panic - panic: ehci_device_clear_toggle: queue active
On 30/11/15(Mon) 18:28, Björn Ketelaars wrote: > Hello, > > I repeatedly hit the kernel panic below. Easy to reproduce as it happens over > and over again within 60 minutes after rebooting. Root cause is not known. > > I'm running snapshot on an USB stick. I tried different USB ports with the > same > result. Next step will be an attempt with a different USB stick. > > I think this issue has been mentioned before: > > https://marc.info/?t=14184059141&r=1&w=3 > http://openbsd-archive.7691.n7.nabble.com/panic-ehci-device-clear-toggle-queue-active-td231729.html > http://article.gmane.org/gmane.os.openbsd.bugs/19812/ > > Any ideas on how to tackle this issue? You can try the diff below and tell me if it helps. Index: ehci.c === RCS file: /cvs/src/sys/dev/usb/ehci.c,v retrieving revision 1.187 diff -u -p -r1.187 ehci.c --- ehci.c 26 Jun 2015 11:17:34 - 1.187 +++ ehci.c 14 Oct 2015 14:24:19 - @@ -188,12 +188,11 @@ int ehci_alloc_sitd_chain(struct ehci_s void ehci_abort_isoc_xfer(struct usbd_xfer *xfer, usbd_status status); -usbd_statusehci_device_setintr(struct ehci_softc *, struct ehci_soft_qh *, - int ival); +struct ehci_soft_qh * ehci_intr_get_sqh(struct usbd_pipe *); -void ehci_add_qh(struct ehci_soft_qh *, struct ehci_soft_qh *); -void ehci_rem_qh(struct ehci_softc *, struct ehci_soft_qh *); -void ehci_set_qh_qtd(struct ehci_soft_qh *, struct ehci_soft_qtd *); +void ehci_add_qh(struct usbd_pipe *, struct ehci_soft_qh *, + struct ehci_soft_qtd *); +void ehci_rem_qh(struct ehci_softc *, struct usbd_pipe *); void ehci_sync_hc(struct ehci_softc *); void ehci_close_pipe(struct usbd_pipe *); @@ -413,7 +412,6 @@ ehci_init(struct ehci_softc *sc) sqh->qh.qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); sqh->qh.qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); sqh->qh.qh_qtd.qtd_status = htole32(EHCI_QTD_HALTED); - sqh->sqtd = NULL; usb_syncmem(&sqh->dma, sqh->offs, sizeof(sqh->qh), BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD); } @@ -444,7 +442,6 @@ ehci_init(struct ehci_softc *sc) sqh->qh.qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); sqh->qh.qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); sqh->qh.qh_qtd.qtd_status = htole32(EHCI_QTD_HALTED); - sqh->sqtd = NULL; usb_syncmem(&sqh->dma, sqh->offs, sizeof(sqh->qh), BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD); @@ -729,6 +726,7 @@ ehci_check_qh_intr(struct ehci_softc *sc return; } done: + ehci_rem_qh(sc, xfer->pipe); TAILQ_REMOVE(&sc->sc_intrhead, ex, inext); timeout_del(&xfer->timeout_handle); usb_rem_task(xfer->pipe->device, &xfer->abort_task); @@ -861,7 +859,7 @@ ehci_idone(struct usbd_xfer *xfer) { struct ehci_xfer *ex = (struct ehci_xfer *)xfer; struct ehci_soft_qtd *sqtd; - u_int32_t status = 0, nstatus = 0; + uint32_t status = 0, nstatus = 0; int actlen, cerr; #ifdef DIAGNOSTIC @@ -1171,13 +1169,7 @@ ehci_freex(struct usbd_bus *bus, struct void ehci_device_clear_toggle(struct usbd_pipe *pipe) { - struct ehci_pipe *epipe = (struct ehci_pipe *)pipe; - -#ifdef DIAGNOSTIC - if ((epipe->sqh->qh.qh_qtd.qtd_status & htole32(EHCI_QTD_ACTIVE)) != 0) - panic("ehci_device_clear_toggle: queue active"); -#endif - epipe->sqh->qh.qh_qtd.qtd_status &= htole32(~EHCI_QTD_TOGGLE_MASK); + pipe->endpoint->savedtoggle = 0; } #ifdef EHCI_DEBUG @@ -1374,29 +1366,17 @@ ehci_open(struct usbd_pipe *pipe) struct usbd_device *dev = pipe->device; struct ehci_softc *sc = (struct ehci_softc *)dev->bus; usb_endpoint_descriptor_t *ed = pipe->endpoint->edesc; - u_int8_t addr = dev->address; u_int8_t xfertype = ed->bmAttributes & UE_XFERTYPE; struct ehci_pipe *epipe = (struct ehci_pipe *)pipe; struct ehci_soft_qh *sqh; usbd_status err; - int s; - int ival, speed, naks; - int hshubaddr, hshubport; - DPRINTFN(1, ("ehci_open: pipe=%p, addr=%d, endpt=%d\n", + DPRINTFN(1, ("%s: pipe=%p, addr=%d, endpt=%d\n", __func__, pipe, addr, ed->bEndpointAddress)); if (sc->sc_bus.dying) return (USBD_IOERROR); - if (dev->myhsport) { - hshubaddr = dev->myhsport->parent->address; - hshubport = dev->myhsport->portno; - } else { - hshubaddr = 0; - hshubport = 0; - } - /* Root Hub */ if (pipe->device->depth == 0) { switch (ed->bEndpointAddress) { @@ -1412,55 +1392,11 @@ ehci_open(struct usbd_pipe *pipe) retur
Re: kernel panic - panic: ehci_device_clear_toggle: queue active
The crash I reported a few days ago is the same: ehci_device_clear_toggle: queue active
kernel panic - panic: ehci_device_clear_toggle: queue active
Hello, I repeatedly hit the kernel panic below. Easy to reproduce as it happens over and over again within 60 minutes after rebooting. Root cause is not known. I'm running snapshot on an USB stick. I tried different USB ports with the same result. Next step will be an attempt with a different USB stick. I think this issue has been mentioned before: https://marc.info/?t=14184059141&r=1&w=3 http://openbsd-archive.7691.n7.nabble.com/panic-ehci-device-clear-toggle-queue-active-td231729.html http://article.gmane.org/gmane.os.openbsd.bugs/19812/ Any ideas on how to tackle this issue? -- Björn Ketelaars GPG key: 0x4F0E5F21 OpenBSD 5.8-current (GENERIC.MP) #0: Mon Nov 30 08:22:20 CET 2015 r...@gateway.lan:/storage/8899fc1454db04de.a/home/code/src/sys/arch/amd64/compile/GENERIC.MP real mem = 4242419712 (4045MB) avail mem = 4109725696 (3919MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xf3bdb000 (64 entries) bios0: vendor HP version "J06" date 11/09/2013 bios0: HP ProLiant MicroServer Gen8 acpi0 at bios0: rev 2 acpi0: sleep states S0 S4 S5 acpi0: tables DSDT FACP SPCR MCFG HPET SPMI ERST APIC BERT HEST SSDT SSDT SSDT SSDT SSDT acpi0: wakeup devices PCI0(S4) acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimcfg0 at acpi0 addr 0xf400, bus 0-63 acpihpet0 at acpi0: 14318179 Hz acpimadt0 at acpi0 addr 0xfee0: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Celeron(R) CPU G1610T @ 2.30GHz, 2295.13 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,XSAVE,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT cpu0: 256KB 64b/line 8-way L2 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 99MHz cpu0: mwait min=64, max=64, C-substates=0.2.1.1, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Celeron(R) CPU G1610T @ 2.30GHz, 2294.79 MHz cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,XSAVE,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT cpu1: 256KB 64b/line 8-way L2 cache cpu1: smt 0, core 1, package 0 ioapic0 at mainbus0: apid 8 pa 0xfec0, version 20, 24 pins ioapic0: misconfigured as apic 0, remapped to apid 8 acpiprt0 at acpi0: bus 13 (IPT1) acpiprt1 at acpi0: bus -1 (IPT2) acpiprt2 at acpi0: bus -1 (IPT3) acpiprt3 at acpi0: bus -1 (IPT4) acpiprt4 at acpi0: bus 3 (IPT5) acpiprt5 at acpi0: bus -1 (IPT6) acpiprt6 at acpi0: bus 4 (IPT7) acpiprt7 at acpi0: bus 1 (IPT8) acpiprt8 at acpi0: bus 7 (PT02) acpiprt9 at acpi0: bus -1 (PT03) acpiprt10 at acpi0: bus 2 (PT05) acpiprt11 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0: C2(350@96 mwait.1@0x20), C1(1000@1 mwait.1) acpicpu1 at acpi0: C2(350@96 mwait.1@0x20), C1(1000@1 mwait.1) acpitz0 at acpi0: critical temperature is 31 degC ipmi at mainbus0 not configured pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel Core 3G Host" rev 0x09 ppb0 at pci0 dev 1 function 0 "Intel Core 3G PCIE" rev 0x09: msi pci1 at ppb0 bus 7 ppb1 at pci0 dev 6 function 0 "Intel Core 3G PCIE" rev 0x09: msi pci2 at ppb1 bus 2 ehci0 at pci0 dev 26 function 0 "Intel 6 Series USB" rev 0x05: apic 8 int 21 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 ppb2 at pci0 dev 28 function 0 "Intel 6 Series PCIE" rev 0xb5 pci3 at ppb2 bus 13 ppb3 at pci0 dev 28 function 4 "Intel 6 Series PCIE" rev 0xb5 pci4 at ppb3 bus 3 bge0 at pci4 dev 0 function 0 "Broadcom BCM5720" rev 0x00, BCM5720 A0 (0x572), APE firmware NCSI 1.2.46.0: msi, address d0:bf:9c:46:de:14 brgphy0 at bge0 phy 1: BCM5720C 10/100/1000baseT PHY, rev. 0 bge1 at pci4 dev 0 function 1 "Broadcom BCM5720" rev 0x00, BCM5720 A0 (0x572), APE firmware NCSI 1.2.46.0: msi, address d0:bf:9c:46:de:15 brgphy1 at bge1 phy 2: BCM5720C 10/100/1000baseT PHY, rev. 0 ppb4 at pci0 dev 28 function 6 "Intel 6 Series PCIE" rev 0xb5 pci5 at ppb4 bus 4 xhci0 at pci5 dev 0 function 0 "Renesas uPD720201 xHCI" rev 0x03: msi usb1 at xhci0: USB revision 3.0 uhub1 at usb1 "Renesas xHCI root hub" rev 3.00/1.00 addr 1 ppb5 at pci0 dev 28 function 7 "Intel 6 Series PCIE" rev 0xb5 pci6 at ppb5 bus 1 "Hewlett-Packard iLO3 Slave" rev 0x05 at pci6 dev 0 function 0 not configured vga1 at pci6 dev 0 function 1 "Matrox MGA G200eH" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) "Hewlett-Packard iLO3 Management" rev 0x05 at pci6 dev 0 function 2 not configured uhci0 at pci6 dev 0 function 4 "Hewlett-Packard USB" rev 0x02: apic 8 int 16 usb2 at uhci0: USB revision 1.0 uhub2 at usb2 "Hewlett-Pack