Date: Mon, 13 Jun 2011 22:11:28 -0700 From: Trevor Blackwell <trevor@anybots.com> To: freebsd-usb@freebsd.org Subject: Hub TT reset code causes ehci failure Message-ID: <BANLkTinyUsKipO45%2BDXKs_Hqa--go6Q1HQ@mail.gmail.com>
index | next in thread | raw e-mail
I'm seeing the USB system halt with: Jun 13 21:36:13 qb132 kernel: ehci_interrupt: unrecoverable error, controller halted I hadn't seen this before on any of our systems until I installed the hub_tt_hardening patch. The flag set is EHCI_STS_HSE, meaning: Host System Error R/WC. The Host Controller sets this bit to 1 when a serious error occurs during a host system access involving the Host Controller module. In a PCI system, conditions that set this bit to 1 include PCI Parity error, PCI Master Abort, and PCI Target Abort. When this error occurs, the Host Controller clears the Run/Stop bit in the Command register to prevent further execution of the scheduled TDs. Can "PCI Target Abort" be caused by an invalid memory address? That USB bus is busy. There are 3 hubs including the root and 5 devices on that USB bus. 4 of the devices have active bulk read transactions, and one is an audio devices with bidirectional isoc transactions. Here's the complete register dump it prints: Jun 13 21:36:13 qb132 kernel: ehci_interrupt: unrecoverable error, controller halted Jun 13 21:36:13 qb132 kernel: cmd=0x00010030 Jun 13 21:36:13 qb132 kernel: EHCI_CMD_ITC_1 Jun 13 21:36:13 qb132 kernel: EHCI_CMD_ASE Jun 13 21:36:13 qb132 kernel: EHCI_CMD_PSE Jun 13 21:36:13 qb132 kernel: sts=0x0000d000 Jun 13 21:36:13 qb132 kernel: EHCI_STS_ASS Jun 13 21:36:13 qb132 kernel: EHCI_STS_PSS Jun 13 21:36:13 qb132 kernel: EHCI_STS_HCH Jun 13 21:36:13 qb132 kernel: ien=0x00000037 Jun 13 21:36:13 qb132 kernel: frindex=0x000013ac ctrdsegm=0x00000000 periodic=0x34113000 async=0xffffffe1 Jun 13 21:36:13 qb132 kernel: port 1 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 2 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 3 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 4 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 5 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 6 status=0x00001005 Jun 13 21:36:13 qb132 kernel: port 7 status=0x00001000 Jun 13 21:36:13 qb132 kernel: port 8 status=0x00001000 Jun 13 21:36:13 qb132 kernel: ehci_dump_isoc: isochronous dump from frame 0x075: Jun 13 21:36:13 qb132 kernel: ITD(0xc5657180) at 0x25e57180 Jun 13 21:36:13 qb132 kernel: next=0x0846e904 Jun 13 21:36:13 qb132 kernel: status[0]=0x00000220; <> Jun 13 21:36:13 qb132 kernel: status[1]=0x00000e20; <> Jun 13 21:36:13 qb132 kernel: status[2]=0x00001a20; <> Jun 13 21:36:13 qb132 kernel: status[3]=0x00002620; <> Jun 13 21:36:13 qb132 kernel: status[4]=0x00003220; <> Jun 13 21:36:13 qb132 kernel: status[5]=0x8c003e20; <ACTIVE> Jun 13 21:36:13 qb132 kernel: status[6]=0x8c004a20; <ACTIVE> Jun 13 21:36:13 qb132 kernel: status[7]=0x8c005620; <ACTIVE> Jun 13 21:36:13 qb132 kernel: bp[0]=0x12c2d204 Jun 13 21:36:13 qb132 kernel: addr=0x04; endpt=0x2 Jun 13 21:36:13 qb132 kernel: bp[1]=0x12c2ec00 Jun 13 21:36:13 qb132 kernel: dir=in; mpl=0x400 Jun 13 21:36:13 qb132 kernel: bp[2..6]=0x12c2f003,0x12c30000,0x12c31000,0x12c32000,0x12c33000 Jun 13 21:36:13 qb132 kernel: bp_hi=0x00000000,0x00000000,0x00000000,0x00000000, Jun 13 21:36:13 qb132 kernel: 0x00000000,0x00000000,0x00000000 Jun 13 21:36:13 qb132 kernel: ITD(0xc446b700) at 0x0846b700 Jun 13 21:36:13 qb132 kernel: next=0x25e57180 Jun 13 21:36:13 qb132 kernel: status[0]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[1]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[2]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[3]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[4]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[5]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[6]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: status[7]=0x00000000; <> Jun 13 21:36:13 qb132 kernel: bp[0]=0x00000000 Jun 13 21:36:13 qb132 kernel: addr=0x00; endpt=0x0 Jun 13 21:36:13 qb132 kernel: bp[1]=0x00000000 Jun 13 21:36:13 qb132 kernel: dir=out; mpl=0x00 Jun 13 21:36:13 qb132 kernel: bp[2..6]=0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 Jun 13 21:36:13 qb132 kernel: bp_hi=0x00000000,0x00000000,0x00000000,0x00000000, Jun 13 21:36:13 qb132 kernel: 0x00000000,0x00000000,0x00000000 Jun 13 21:36:13 qb132 kernel: SITD(0xc446e900) at 0x0846e900 Jun 13 21:36:13 qb132 kernel: next=0x08462e02 Jun 13 21:36:13 qb132 kernel: portaddr=0x00000000 dir=out addr=0 endpt=0x0 port=0x0 huba=0x0 Jun 13 21:36:13 qb132 kernel: mask=0x00000000 Jun 13 21:36:13 qb132 kernel: status=0x00000000 <> len=0x0 Jun 13 21:36:13 qb132 kernel: back=0x00000001, bp=0x00000000,0x00000000,0x00000000,0x00000000 Jun 13 21:36:13 qb132 kernel: ehci_interrupt: blocking interrupts 0x10 -- Trevor Blackwell trevor@anybots.com 650 776 7870help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTinyUsKipO45%2BDXKs_Hqa--go6Q1HQ>
