Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Sep 2009 09:16:43 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        freebsd-usb@freebsd.org
Cc:        Olivier Cochard-Labbe <olivier@cochard.me>, freebsd-gnats-submit@freebsd.org
Subject:   Re: usb/139142: [regression] ehci drivers (NVIDIA nForce4 USB 2.0 controller ) not working with 8.0-RC1
Message-ID:  <200909260916.45106.hselasky@c2i.net>
In-Reply-To: <200909252038.n8PKcEch066064@www.freebsd.org>
References:  <200909252038.n8PKcEch066064@www.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 25 September 2009 22:38:14 Olivier Cochard-Labbe wrote:
> >Number:         139142
> >Category:       usb
> >Synopsis:       [regression] ehci drivers (NVIDIA nForce4 USB 2.0
> > controller ) not working with 8.0-RC1 Confidential:   no
> >Severity:       serious
> >Priority:       low
> >Responsible:    freebsd-usb
> >State:          open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class:          sw-bug
> >Submitter-Id:   current-users
> >Arrival-Date:   Fri Sep 25 20:40:02 UTC 2009
> >Closed-Date:
> >Last-Modified:
> >Originator:     Olivier Cochard-Labbe
> >Release:        8.0 RC1
> >Organization:
>
> FreeNAS/BSDRP
>
> >Environment:
> >Description:
>
> I meet a problem since 8.0 Beta1 to 8.0-RC1 (amd64 and i386) on an Asus
> K8N4-E Deluxe motherboard:
>
> During the kernel load, my system hang (no dump, no error message).
> The last messages are (hand copy) in verbose mode:
>
> ohci0: <OHCI (generic) USB controller> irq 21 at device 2.0 on pci0
> ohci0: Lazy allocation of 0x1000 bytes rid 0x10 type 3 at 0x80000000
> ohci0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0x80000000
> ioapic0: routing intpin 21 (PCI IRQ 21) to lapic 0 vector 49
> ohci0: [MPSAFE]
> ohci0: [ITHREAD]
> usbus0: SMM does not respond, resetting
> usbus0: reset timeout
> ohci0: USB init failed
> device_attach: ohci0 attach returned 6
> ehci0: <NVIDIA nForce4 USB 2.0 controller> irq 22 at device 2.1 on pci0
> ehci0: Lazy allocation of 0x4000 bytes rid 0x10 type 3 at 0x80000000
> ehci0: Reserved 0x4000 bytes for rid 0x10 type 3 at 0x80000000
> ioapci0: routing intpin 22 (PCI IRQ 22) to lapic 0 vector 49
> ehci0: [MPSAFE]
> ehci0: [ITHREAD]
>
> If I disable the USB 2.0 controller in the BIOS: The system can
> continue to load the kernel.
>
> The ehci drivers works great with FreeBSD 7.2: The file attached include
> the dmesg and pciconf -lv under FreeBSD 7.2.
>
> Thanks,
>
> >How-To-Repeat:
>
> Using 8.0-RC1 on an Asus K8N4-E Delux motherboard
>
> >Fix:
>
> Disable USB 2.0 controller in the BIOS.
>
> Patch attached with submission follows:
>
> [olivier@dev64]~>dmesg
> 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 7.2-RELEASE-p2 #0: Wed Jun 24 00:14:35 UTC 2009
>     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
> Timecounter "i8254" frequency 1193182 Hz quality 0
> CPU: AMD Athlon(tm) 64 Processor 3000+ (2010.31-MHz K8-class CPU)
>   Origin = "AuthenticAMD"  Id = 0x20fc2  Stepping = 2
>  
> Features=0x78bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA
>,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2> Features2=0x1<SSE3>
>   AMD Features=0xe2500800<SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow!>
>   AMD Features2=0x1<LAHF>
> usable memory = 2134417408 (2035 MB)
> avail memory  = 2058027008 (1962 MB)
> ACPI APIC Table: <Nvidia AWRDACPI>
> ioapic0 <Version 1.1> irqs 0-23 on motherboard
> kbd1 at kbdmux0
> acpi0: <Nvidia AWRDACPI> on motherboard
> acpi0: [ITHREAD]
> acpi0: Power Button (fixed)
> acpi0: reservation of 0, a0000 (3) failed
> acpi0: reservation of 100000, 7fef0000 (3) failed
> Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
> acpi_timer0: <24-bit timer at 3.579545MHz> port 0x4008-0x400b on acpi0
> acpi_button0: <Power Button> on acpi0
> pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
> pci0: <ACPI PCI bus> on pcib0
> pci0: <memory> at device 0.0 (no driver attached)
> isab0: <PCI-ISA bridge> at device 1.0 on pci0
> isa0: <ISA bus> on isab0
> pci0: <serial bus, SMBus> at device 1.1 (no driver attached)
> ohci0: <OHCI (generic) USB controller> mem 0xd3003000-0xd3003fff irq 21 at
> device 2.0 on pci0 ohci0: [GIANT-LOCKED]
> ohci0: [ITHREAD]
> usb0: OHCI version 1.0, legacy support
> usb0: SMM does not respond, resetting
> usb0: <OHCI (generic) USB controller> on ohci0
> usb0: USB revision 1.0
> uhub0: <nVidia OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
> uhub0: 10 ports with 10 removable, self powered
> atapci0: <nVidia nForce CK804 UDMA133 controller> port
> 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf000-0xf00f at device 6.0 on pci0
> ata0: <ATA channel 0> on atapci0
> ata0: [ITHREAD]
> ata1: <ATA channel 1> on atapci0
> ata1: [ITHREAD]
> atapci1: <nVidia nForce CK804 SATA300 controller> port
> 0x9f0-0x9f7,0xbf0-0xbf3,0x970-0x977,0xb70-0xb73,0xd800-0xd80f mem
> 0xd3002000-0xd3002fff irq 22 at device 7.0 on pci0 atapci1: [ITHREAD]
> ata2: <ATA channel 0> on atapci1
> ata2: [ITHREAD]
> ata3: <ATA channel 1> on atapci1
> ata3: [ITHREAD]
> atapci2: <nVidia nForce CK804 SATA300 controller> port
> 0x9e0-0x9e7,0xbe0-0xbe3,0x960-0x967,0xb60-0xb63,0xc400-0xc40f mem
> 0xd3001000-0xd3001fff irq 23 at device 8.0 on pci0 atapci2: [ITHREAD]
> ata4: <ATA channel 0> on atapci2
> ata4: [ITHREAD]
> ata5: <ATA channel 1> on atapci2
> ata5: [ITHREAD]
> pcib1: <ACPI PCI-PCI bridge> at device 9.0 on pci0
> pci5: <ACPI PCI bus> on pcib1
> nfe0: <NVIDIA nForce4 CK804 MCP9 Networking Adapter> port 0xb000-0xb007 mem
> 0xd3000000-0xd3000fff irq 21 at device 10.0 on pci0 miibus0: <MII bus> on
> nfe0
> e1000phy0: <Marvell 88E1111 Gigabit PHY> PHY 15 on miibus0
> e1000phy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX,
> auto nfe0: Ethernet address: 00:13:d4:d6:3a:7b
> nfe0: [FILTER]
> pcib2: <ACPI PCI-PCI bridge> at device 11.0 on pci0
> pci4: <ACPI PCI bus> on pcib2
> pcib3: <ACPI PCI-PCI bridge> at device 12.0 on pci0
> pci3: <ACPI PCI bus> on pcib3
> pcib4: <ACPI PCI-PCI bridge> at device 13.0 on pci0
> pci2: <ACPI PCI bus> on pcib4
> pcib5: <ACPI PCI-PCI bridge> at device 14.0 on pci0
> pci1: <ACPI PCI bus> on pcib5
> vgapci0: <VGA-compatible display> mem
> 0xd0000000-0xd0ffffff,0xc0000000-0xcfffffff,0xd1000000-0xd1ffffff irq 18 at
> device 0.0 on pci1 acpi_tz0: <Thermal Zone> on acpi0
> sio0: configured irq 4 not in bitmap of probed irqs 0
> sio0: port may not be enabled
> sio0: configured irq 4 not in bitmap of probed irqs 0
> sio0: port may not be enabled
> sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on
> acpi0 sio0: type 16550A
> sio0: [FILTER]
> cpu0: <ACPI CPU> on acpi0
> acpi_throttle0: <ACPI CPU Throttling> on cpu0
> powernow0: <Cool`n'Quiet K8> on cpu0
> orm0: <ISA Option ROM> at iomem 0xd0000-0xd3fff on isa0
> atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
> atkbd0: <AT Keyboard> irq 1 on atkbdc0
> kbd0 at atkbd0
> atkbd0: [GIANT-LOCKED]
> atkbd0: [ITHREAD]
> ppc0: cannot reserve I/O port range
> sc0: <System console> at flags 0x100 on isa0
> sc0: VGA <16 virtual consoles, flags=0x300>
> sio1: configured irq 3 not in bitmap of probed irqs 0
> sio1: port may not be enabled
> vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
> uhub1: <BTC USB Keyboard, class 9/0, rev 1.10/0.03, addr 2> on uhub0
> uhub1: 2 ports with 1 removable, bus powered
> ukbd0: <BTC USB Keyboard, class 0/0, rev 1.10/0.03, addr 3> on uhub1
> kbd2 at ukbd0
> uhid0: <BTC USB Keyboard, class 0/0, rev 1.10/0.03, addr 3> on uhub1
> ums0: <vendor 0x04b3 USB Optical Mouse, class 0/0, rev 2.00/2.00, addr 4>
> on uhub1 ums0: 3 buttons and Z dir.
> Timecounter "TSC" frequency 2010312369 Hz quality 800
> Timecounters tick every 1.000 msec
> ad0: 286168MB <SAMSUNG HD300LD WK100-12> at ata0-master UDMA100
> ad8: 953869MB <SAMSUNG HD103UJ 1AA01113> at ata4-master SATA150
> GEOM: ad0: the secondary GPT table is corrupt or invalid.
> GEOM: ad0: using the primary only -- recovery suggested.
> GEOM_LABEL: Label for provider ad0p1 is ufsid/477f45096d16161b.
> GEOM_LABEL: Label for provider ad0p1 is ufs/Disque1.
> GEOM_LABEL: Label for provider ad0s1a is ufsid/4a675b954a5764b7.
> GEOM_LABEL: Label for provider ad8p1 is ufsid/499c8ec590cbe4cd.
> GEOM_LABEL: Label for provider ad8p1 is ufs/1TB3.
> Trying to mount root from ufs:/dev/ad0s1a
> GEOM_LABEL: Label ufs/Disque1 removed.
> GEOM_LABEL: Label ufsid/477f45096d16161b removed.
> GEOM_LABEL: Label ufsid/4a675b954a5764b7 removed.
> GEOM_LABEL: Label for provider ad0s1a is ufsid/4a675b954a5764b7.
> GEOM_LABEL: Label ufsid/4a675b954a5764b7 removed.
> GEOM_LABEL: Label ufsid/499c8ec590cbe4cd removed.
> WARNING: /mnt was not properly dismounted
> kqemu version 0x00010400
> kqemu: KQEMU installed, max_locked_mem=1042196kB.
> [olivier@dev64]~>pciconf -lv
> none0@pci0:0:0:0:	class=0x058000 card=0x815a1043 chip=0x005e10de rev=0xa3
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 Memory Controller'
>     class      = memory
> isab0@pci0:0:1:0:	class=0x060100 card=0x815a1043 chip=0x005010de rev=0xa3
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCI to ISA Bridge'
>     class      = bridge
>     subclass   = PCI-ISA
> none1@pci0:0:1:1:	class=0x0c0500 card=0x815a1043 chip=0x005210de rev=0xa2
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 SMBus'
>     class      = serial bus
>     subclass   = SMBus
> ohci0@pci0:0:2:0:	class=0x0c0310 card=0x815a1043 chip=0x005a10de rev=0xa2
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 USB Controller'
>     class      = serial bus
>     subclass   = USB
> atapci0@pci0:0:6:0:	class=0x01018a card=0x815a1043 chip=0x005310de rev=0xf2
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'NVidia nForce 4 SLI IDE Controller'
>     class      = mass storage
>     subclass   = ATA
> atapci1@pci0:0:7:0:	class=0x010185 card=0x815a1043 chip=0x005410de rev=0xf3
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'NVidia nForce 4 SLI IDE Controller'
>     class      = mass storage
>     subclass   = ATA
> atapci2@pci0:0:8:0:	class=0x010185 card=0x815a1043 chip=0x005510de rev=0xf3
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'NVidia nForce 4 SLI IDE Controller'
>     class      = mass storage
>     subclass   = ATA
> pcib1@pci0:0:9:0:	class=0x060401 card=0x00000000 chip=0x005c10de rev=0xa2
> hdr=0x01 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCI Bridge'
>     class      = bridge
>     subclass   = PCI-PCI
> nfe0@pci0:0:10:0:	class=0x068000 card=0x81411043 chip=0x005710de rev=0xa3
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 Ultra NVidia Network Bus Enumerator'
>     class      = bridge
> pcib2@pci0:0:11:0:	class=0x060400 card=0x00000000 chip=0x005d10de rev=0xa3
> hdr=0x01 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCIe Bridge'
>     class      = bridge
>     subclass   = PCI-PCI
> pcib3@pci0:0:12:0:	class=0x060400 card=0x00000000 chip=0x005d10de rev=0xa3
> hdr=0x01 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCIe Bridge'
>     class      = bridge
>     subclass   = PCI-PCI
> pcib4@pci0:0:13:0:	class=0x060400 card=0x00000000 chip=0x005d10de rev=0xa3
> hdr=0x01 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCIe Bridge'
>     class      = bridge
>     subclass   = PCI-PCI
> pcib5@pci0:0:14:0:	class=0x060400 card=0x00000000 chip=0x005d10de rev=0xa3
> hdr=0x01 vendor     = 'Nvidia Corp'
>     device     = 'nForce4 PCIe Bridge'
>     class      = bridge
>     subclass   = PCI-PCI
> hostb0@pci0:0:24:0:	class=0x060000 card=0x00000000 chip=0x11001022 rev=0x00
> hdr=0x00 vendor     = 'Advanced Micro Devices (AMD)'
>     device     = '(K8) Athlon 64/Opteron HyperTransport Technology
> Configuration' class      = bridge
>     subclass   = HOST-PCI
> hostb1@pci0:0:24:1:	class=0x060000 card=0x00000000 chip=0x11011022 rev=0x00
> hdr=0x00 vendor     = 'Advanced Micro Devices (AMD)'
>     device     = '(K8) Athlon 64/Opteron Address Map'
>     class      = bridge
>     subclass   = HOST-PCI
> hostb2@pci0:0:24:2:	class=0x060000 card=0x00000000 chip=0x11021022 rev=0x00
> hdr=0x00 vendor     = 'Advanced Micro Devices (AMD)'
>     device     = '(K8) Athlon 64/Opteron DRAM Controller'
>     class      = bridge
>     subclass   = HOST-PCI
> hostb3@pci0:0:24:3:	class=0x060000 card=0x00000000 chip=0x11031022 rev=0x00
> hdr=0x00 vendor     = 'Advanced Micro Devices (AMD)'
>     device     = '(K8) Athlon 64/Opteron Miscellaneous Control'
>     class      = bridge
>     subclass   = HOST-PCI
> vgapci0@pci0:1:0:0:	class=0x030000 card=0x00000000 chip=0x01d310de rev=0xa1
> hdr=0x00 vendor     = 'Nvidia Corp'
>     device     = 'GeForce 7300 SE'
>     class      = display
>     subclass   = VGA
>
> >Release-Note:
> >Audit-Trail:
> >Unformatted:

Have you tried only disabling USB Legacy support?

There is another USB related thread going on:

"sb600/sb700 ohci experimental patch" on -current.

Have you tried any patches from there?

diff --git a/sys/dev/usb/controller/ohci.c b/sys/dev/usb/controller/ohci.c
index 30592c1..fb6ba34 100644
--- a/sys/dev/usb/controller/ohci.c
+++ b/sys/dev/usb/controller/ohci.c
@@ -247,8 +249,8 @@ reset:
        OWRITE4(sc, OHCI_INTERRUPT_ENABLE, sc->sc_eintrs | OHCI_MIE);
        /* switch on desired functional features */
        ctl = OREAD4(sc, OHCI_CONTROL);
-       ctl &= ~(OHCI_CBSR_MASK | OHCI_LES | OHCI_HCFS_MASK | OHCI_IR);
-       ctl |= OHCI_PLE | OHCI_IE | OHCI_CLE | OHCI_BLE |
+       ctl &= ~(OHCI_CBSR_MASK | OHCI_LES | OHCI_HCFS_MASK | OHCI_IR | 
OHCI_CLE |
OHCI_CLF);
+       ctl |= OHCI_PLE | OHCI_IE | /*OHCI_CLE |*/ OHCI_BLE |
            OHCI_RATIO_1_4 | OHCI_HCFS_OPERATIONAL;
        /* And finally start it! */
        OWRITE4(sc, OHCI_CONTROL, ctl);
@@ -2727,8 +2729,17 @@ ohci_set_hw_power(struct usb_bus *bus)
        temp = OREAD4(sc, OHCI_CONTROL);
        temp &= ~(OHCI_PLE | OHCI_IE | OHCI_CLE | OHCI_BLE);

-       if (flags & USB_HW_POWER_CONTROL)
+       if (flags & USB_HW_POWER_CONTROL) {
+               struct usb_page_search buf_res;
+
+               buf_res.physaddr = OREAD4(sc, OHCI_CONTROL_HEAD_ED);
+               printf("(hw power) control head <= %p\n", 
(void*)buf_res.physaddr);
+               usbd_get_page(&sc->sc_hw.ctrl_start_pc, 0, &buf_res);
+               printf("(hw power) control head => %p\n", 
(void*)buf_res.physaddr);
+               OWRITE4(sc, OHCI_CONTROL_HEAD_ED, buf_res.physaddr);
+
                temp |= OHCI_CLE;
+       }

--HPS




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200909260916.45106.hselasky>