[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: USB on X86 platform boot

On 1 Jun 2001, Adam Di Carlo wrote:

> Erich Mueller <em@gonzales.swb.de> writes:
> > sorry for having lost the thread again now, I changed machines several
> > times between home and workplace and also subscribed fom another address. 
> > The temporary fix or workaround based on the hint from this list, I think
> > it was Karl Hammar <karl@kalle.csb.ki.se> forwarded to me by Adam. The
> > (borrowed) PS2 keyboard in place in addition to the USB keyboard of the
> > machine did help to get past the critical point. Now the machine is
> > loading its guts over the network and will soon be singing and dancing. 
> > (The original problem is still not fixed, maybe a later kernel does. 
> > Should this workaround be advertized in the faqs or docs somewhere?) 
> I shall add a todo item that we need to try to fix this.
> Please clarify some matters for me so I can get it right.
> The problem is that you cannot use the USB keyboard during the install
> process, no matter the BIOS settings, you had to use a PS/2 keyboard,
> right?

The USB keyboard worked according to BIOS settings or not (USB CHIP and
KEYBOARD/MOUSE on/off work as advertised) The problem that I was
confronted with was that after the kernel boot messages displayed that
keyboard timout message no keyboard attached the USB keyboard was ignored
regardless of bios settings. After attaching the PS/2 keyboard (togather
with the (enabled in BIOS) USB keyboard I used the USB keyboard all the
way for all input with no problems at all. The lack of PS/2 keyboard only
surfaced when trying to hit the enter key at the first requested input
after the booting of the kernel noticed that no AT style keyboard present.

I hope this clarifies the problem I did not do one single keystroke on
the PS/2 keyboard all the inputs are taken from the USB keyboard. BIOS
settings, SYSLINUX and all the bootstrap interaction worked with no hickup
when the PS/2 keyboard is plugged in(but unused for input). I would
dare to speculate that the code in the kernel that branched off to spit
out the message about keyboard timout also detaches all the
subsequent communication process with the input devices (regardless of the
perfectly supported ad sevicable USB keyboard available)

The message stems form /usr/src/linux/drivers/char/pc_keyb.c

static int send_data(unsigned char data)
        int retries = 3;

        do {
                unsigned long timeout = KBD_TIMEOUT;

                acknowledge = 0; /* Set by interrupt routine on receipt of
ACK. */
                resend = 0;
                reply_expected = 1;
                for (;;) {
                        if (acknowledge)
                                return 1;
                        if (resend)
                        if (!--timeout) {
                                printk(KERN_WARNING "keyboard: Timeout - AT keyboard not present?\n");
                                return 0;
        } while (retries-- > 0);
        printk(KERN_WARNING "keyboard: Too many NACKs -- noisy kbd
        return 0;

Hope this helps,

If you need more testing let me know specificaly what to check or observe.
The hardware is available for all (nondestructive) tests in supprot of
ironing out this behaviour. It would be a pitty if perfectly suitable
hardware be excluded due to some silly turn in the kernel code.


Reply to: