Subject: HP Proliant ML115 takes minutes to start kernel
To: None <>
From: Makoto Fujiwara <>
List: tech-kern
Date: 11/27/2007 11:29:28
I have HP/compaq low cost Proliant ML115 server. See dmesg for the

  When NetBSD starts running on this machine, say after the
reading byte count are shown, it looks like hangs. But it is
not. Wait 100 secconds and Copyright notice appears. There are
several points to take time then.

After reading kernel  and bytes count shown  (sec. not measured)
    .. If I hit any key, this wait time can be cancelled.
Then after each line of:
  pckbc0 at isa0 port 0x60-0x64     ---   100 sec.
  pckbd0 at pckbc0 (kbd slot)       ---    30 sec.
  pckbc0: using irq 1 for kbd slot  ---    OK
  wskbd0 at pckbd0: console keyboard, using wsdisplay0  ---  30 sec.
  pms0 at pckbc0 (aux slot)         --- 30 sec.

  Now I found the point of problem. If following patch is
applied, those time disappear. You may say all the time shown
above has been reduced to 1/100.

  The other observation is that the kbd of this machine is
PS/2, but it is attached to the USB port. The kernel looks for
the keyboard but found nothing is connected to the pckbc. By
removing pckbc from kernel config also eliminates the time for
waiting. This story is from other guys blog, not the
experience of myself, sorry.

Any idea ?

Index: sys/dev/ic/pckbc.c
RCS file: /e/cvsync/cvsync/src/sys/dev/ic/pckbc.c,v
retrieving revision 1.38
diff -u -r1.38 pckbc.c
--- sys/dev/ic/pckbc.c	19 Oct 2007 11:59:59 -0000	1.38
+++ sys/dev/ic/pckbc.c	26 Nov 2007 06:47:28 -0000
@@ -143,7 +143,7 @@
 	struct pckbc_slotdata *q = t->t_slotdata[slot];
 	int s;
 	u_char stat, c;
-	int i = 100000; /* if 1 port read takes 1us (?), this polls for 100ms */
+	int i = 1000; /* if 1 port read takes 1us (?), this polls for 100ms */
 	int checkaux = t->t_haveaux;
 	s = splhigh();

Makoto Fujiwara, 
Chiba, Japan, Narita Airport and Disneyland prefecture.