Hello,
While testing on AMD simnow I encounter a timeout in keyboard.c line 246:
/* All is well - enable keyboard interface */ if (!kbc_input_buffer_empty()) return; outb(0x60, KBD_COMMAND); if (!kbc_input_buffer_empty()) return; outb(0x61, KBD_DATA); /* send cmd: enable keyboard and IRQ 1 */ if (kbc_output_buffer_full()) { printk(BIOS_ERR, "Timeout during final keyboard enable\n"); <======= return; }
It seems like line 245 should call kbc_input_buffer_empty() instead of kbc_output_buffer_full() because the previous I/O does not cause the keyboard to generate any data.
On simnow, this causes a boot delay of a minute or so. On real hardware, It appears it could cause a boot delay of 400 ms. Does anyone testing with real hardware ever notice the "Timeout during final keyboard enable" message when logging is enabled?
Thanks, Scott
On Tue, Aug 31, 2010 at 11:16 PM, Scott scott@notabs.org wrote:
Hello,
While testing on AMD simnow I encounter a timeout in keyboard.c line 246:
/* All is well - enable keyboard interface */ if (!kbc_input_buffer_empty()) return; outb(0x60, KBD_COMMAND); if (!kbc_input_buffer_empty()) return; outb(0x61, KBD_DATA); /* send cmd: enable keyboard and IRQ 1 */ if (kbc_output_buffer_full()) { printk(BIOS_ERR, "Timeout during final keyboard enable\n"); <======= return; }
It seems like line 245 should call kbc_input_buffer_empty() instead of kbc_output_buffer_full() because the previous I/O does not cause the keyboard to generate any data.
On simnow, this causes a boot delay of a minute or so. On real hardware, It appears it could cause a boot delay of 400 ms. Does anyone testing with real hardware ever notice the "Timeout during final keyboard enable" message when logging is enabled?
if (!timeout) { printk(BIOS_INFO, "Keyboard controller output buffer result timeout\n"); }
I see this one in hardware.
Thanks, Myles
On Tue, Aug 31, 2010 at 11:16 PM, Scott scott@notabs.org wrote:
Hello,
While testing on AMD simnow I encounter a timeout in keyboard.c line 246:
/* All is well - enable keyboard interface */ if (!kbc_input_buffer_empty()) return; outb(0x60, KBD_COMMAND); if (!kbc_input_buffer_empty()) return; outb(0x61, KBD_DATA); /* send cmd: enable keyboard and IRQ 1 */ if (kbc_output_buffer_full()) { printk(BIOS_ERR, "Timeout during final keyboard enable\n"); <======= return; }
It seems like line 245 should call kbc_input_buffer_empty() instead of kbc_output_buffer_full() because the previous I/O does not cause the keyboard to generate any data.
On simnow, this causes a boot delay of a minute or so. On real hardware, It appears it could cause a boot delay of 400 ms. Does anyone testing with real hardware ever notice the "Timeout during final keyboard enable" message when logging is enabled?
Thanks, Scott
Yes, That should be a input buffer empty check since there isn't an ack to that command. Send a qucik patch and signed-off-by, I will ack it.
Marc