Bug 5932

Summary: PS/2 keyboard does not work with 2.6.15, 2.6.16rc1; BIOS USB legacy emulation
Product: Drivers Reporter: Martin Bretschneider (bugs)
Component: USBAssignee: Greg Kroah-Hartman (greg)
Status: REJECTED DUPLICATE    
Severity: normal CC: akpm, dmitry.torokhov, stern
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.15, 2.6.16rc1 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    
Attachments: Trim down over-zealous OHCI initialization
Add usb_delay_handoff kernel parameter

Description Martin Bretschneider 2006-01-21 08:09:16 UTC
[1.]
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.


[2.]
I used PS/2 keyboards for a long time with kernels < 2.6.15
like 2.6.14.2, 2.6.13 or 2.6.11.10. I used "make oldconfig" to move
the .config file form 2.6.14.2 to 2.6.15 and answered "no" to every
question
Comment 1 Alan Stern 2006-01-21 08:19:55 UTC
You say that the problem does not occur with the newer F10 BIOS?  Then this bug
report should be marked Rejected, shouldn't it?
Comment 2 Dmitry Torokhov 2006-01-21 09:03:37 UTC
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?) 
Comment 3 Alan Stern 2006-01-21 09:24:37 UTC
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?
Comment 4 Martin Bretschneider 2006-01-28 13:07:32 UTC
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

Martin
Comment 5 Alan Stern 2006-01-29 19:29:53 UTC
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.
Comment 6 Martin Bretschneider 2006-01-30 02:04:59 UTC
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.
Comment 7 Alan Stern 2006-01-30 07:12:28 UTC
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.
Comment 8 Alan Stern 2006-01-30 13:01:09 UTC
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!
Comment 9 Martin Bretschneider 2006-02-01 06:06:22 UTC
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 :(
Comment 10 Alan Stern 2006-02-01 10:58:50 UTC
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.
Comment 11 Greg Kroah-Hartman 2006-02-09 13:48:10 UTC

*** This bug has been marked as a duplicate of 6011 ***
Comment 12 Alan Stern 2006-02-09 14:01:27 UTC
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.
Comment 13 Martin Bretschneider 2006-02-15 15:54:22 UTC
Hi Alan,

yes: If I take kernel 2.6.14.2, 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
2.6.16rc1).
Comment 14 Alan Stern 2006-02-16 07:24:23 UTC
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.
Comment 15 Dmitry Torokhov 2006-02-16 08:49:33 UTC
I wonder if we have to start building a DMI list for delayed handoff...