On Sun, 7 Mar 2010 12:49:00 -0800 J.C. Roberts wrote: > On Sun, 7 Mar 2010 17:24:07 +0100 Christopher Zimmermann > <madro...@zakweb.de> wrote: > > > Hi, > > > > I get a complete lock-up while booting during initialisation of my > > SIS7002 EHCI controller. > > > > When enabling USB2.0 support, but disabling 'legacy' mode > > everything is fine. I just can't use my usb keyboard to talk to the > > boot> prompt. > > > > When I enable legacy mode, but set USB2.0 to 'FullSpeed' I just get > > this: > > > > ehci0: timed out waiting for BIOS > > > > I had a look at the source, but don't really get it whether this is > > bad. I could not find corresponding code in the Linux kernel. > > It seems to be about handing over the host controler to the OS > > after the bios used it for 'legacy' mode. Why is this only needed > > for USB2.0? I thought my keyboard and mouse were USB1.0 devices!? > > > > When I enable legacy mode and set USB2.0 to 'HighSpeed' I get the > > above message and the kernel locks up completely. > > I added some DPRINTF()s to the relevant sections. (See below) > > The strange thing is that the last thing the kernel prints out is > > > > ehci: before loop > > > > so the kernel manages to do the printf, but doesn't manage to do > > the funtion call to usb_delay_ms and another printf. > > Now I had a look at the linux ehci driver, because with knoppix I > > have no problems using USB2.0. You can find the corresponding > > section of the linux driver below. > > The linux kernel protects itself by "write-locking" the call to > > ehci_writel, but I have no clue what this means and no clue how to > > achieve this in OpenBSD. The call to down_write() seems to lock a > > semaphore. Any help to fix this is appreciated. > > > > > > Christopher > > > > > > P.S. > > > > Another interesting observation: When removing my AGB graphics > > adaptor and using the onboard graphics chip I have no problems with > > USB at all. > > > > The x86 BIOS sucks to begin with, and worse, the use of various terms > is highly inconsistent... In other words, take this with a grain of > salt, if not a whole shaker of salt, tequila and a lime. > > When you enable "Legacy Mode" in the BIOS of many systems, you're > actually telling the system to find and use the keyboard and mouse on > serial ports (includng PS/2 and similar ports). Of course, this means > if you're actually using USB based keyboard/mouse and you've turned on > "Legacy Mode", you've just made a real mess. --The system believes it > does not have a keyboard or mouse attached because it does not find > them where you told it to find them (serial).
ok, you misunderstood me. My BIOS needs 'legacy' to be turned on to use the USB-keyboard. Thats actually consistent with the BSD terminology in dev/usb/ehcireg.h. See the EHCI_LEGSUP_* and dev/pci/ehci_pci.c: ehci_pci_takecontroller() > Is the kernel locked up? --Possibly No. The kernel may be ignoring the > USB mouse/keyboard that you specifically told the bios to ignore by > turning on "Legacy Mode." When the BIOS tells the kernel that it has > no mouse or keyboard installed, then the kernel thinks, "Ah, we're > running headless," and adjusts accordingly. the kernel stops while booting. Read my orignal post again. I found the very line of code causing this problem, but still don't know exactly how to fix it. Christopher