Kernel Bug Tracker – Bug 5932
PS/2 keyboard does not work with 2.6.15, 2.6.16rc1; BIOS USB legacy emulation
Last modified: 2006-02-16 08:49:33 UTC
a keyboard that is connected to to PS/2 port does not work with
kernel 2.6.15 and 2.6.16rc1. That is to say that no action is seen at the login
promt if I enter any key.
I used PS/2 keyboards for a long time with kernels < 2.6.15
like 22.214.171.124, 2.6.13 or 126.96.36.199. I used "make oldconfig" to move
the .config file form 188.8.131.52 to 2.6.15 and answered "no" to every
You say that the problem does not occur with the newer F10 BIOS? Then this bug
report should be marked Rejected, shouldn't it?
I don't think so. The fact that the newer BIOS has better USB Legacy emulation
code does not eliminate the need to fix breakage of USB handoff code happened
in 2.6.15 (The keyboard was working in 2.6.14, wasn't it?)
Martin, do you still have the F6 BIOS available for testing? If you do, can you
try removing (or commenting out) the call to quirk_usb_handoff_ohci() in
drivers/usb/host/pci-quirks.c (as described in the email thread)? Does that get
the keyboard to work again?
Yes, I took the old F6 BIOS and commented each call of the
quirk_usb_handoff_?hci-calls (that is to say all the three) and the PS/2
keyboard does work with 2.6.16-rc1
Other people with similar difficulties have found that if they left the calls to
the ehci and uhci quirk routines intact, and only commented out the call to the
ohci routine, that this would suffice to fix their problem. I'm curious to know
if you get the same result. It would help narrow down the range of code that
needs to be inspected and changed.
You are right. I only have commented out the ohci call and it does work. But I
guess that my motherboard does not have an uhci controller (or whatever it is)
so it should depend on the motherboard/chipset if the ohci or uhci call has to
be commented out.
No, strangely enough. There have been several problem reports about the ohci
handoff routine but none about the uhci routine.
I'll look at the code and get back to you later.
Created attachment 7182 [details]
Trim down over-zealous OHCI initialization
I'm not an expert on OHCI. However, comparing the quirks code with the code in
the main driver, it looks like there are a couple of small differences. This
patch should make the quirks code act much more like ohci-hcd.
Remember to remove the changes you made before applying the patch!
The "Trim down over-zealous OHCI initialization"-patch does not fix it (patched
against 2.6.16-rc1). If I comment the call of the ohci quirks call, it does work :(
If you boot an old kernel, like 2.6.14, and add "usb-handoff" to the boot
command line, what happens then? In theory, it should be just like the current
2.6.16-rc1 situation: keyboard non-responsive.
*** This bug has been marked as a duplicate of 6011 ***
Martin, I'm still waiting to hear what happens if you boot 2.6.14 (or earlier)
with the "usb-handoff" kernel command-line parameter.
yes: If I take kernel 184.108.40.206, the old F6 BIOS, the usb-handoff parameter and
the keyboard to the PS/2 port, the keyboard does not work (just like using the
Created attachment 7368 [details]
Add usb_delay_handoff kernel parameter
Thanks for testing. This makes it clear that the only way to handle the old
buggy BIOSes is to delay the USB handoff. The attached patch adds a kernel
boot-line parameter "usb_delay_handoff" which should do what you need.
I can't think of any way to detect at runtime whether the delay is needed.
We'll probably have to settle for using the boot parameter.
I wonder if we have to start building a DMI list for delayed handoff...