Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 1997 10:20:01 -0700 (PDT)
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-bugs
Subject:   Re: kern/3375: Ten minute delay at boot-time
Message-ID:  <199704231720.KAA11053@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/3375; it has been noted by GNATS.

From: Bruce Evans <bde@zeta.org.au>
To: are@communique.no, FreeBSD-gnats-submit@freebsd.org
Cc:  Subject: Re: kern/3375: Ten minute delay at boot-time
Date: Thu, 24 Apr 1997 03:15:22 +1000

 >	The system seems to freeze right after the boot prompt. I can enter
 >	e.g a -c at the prompt, or nothing, but after pressing return, the
 >	system will stay put for ten minutes before it continues booting.
 
 This is probably caused by broken RTC (clock) hardware.  If this is the
 case, then you can probably tell by booting with -v and noticing that the
 delay occurs after the "Calibrating clock(s) ... " message.  There is a
 timeout, but it is too large (apparently 10 minutes on your system).
 
 >	This happens with both the generic kernel, and my own one.
 >	It also seems as if the time lapse is _not_ recorded, so that the
 >	clock (as seen with date) sags behind by ten minutes afterwards.
 
 The clock is not supposed to stop.  Perhaps the i/o's to initialize it
 somehow stop it.  This would explain both problems.  Try this fix.  The
 reduced timeout should reduce the delay to < 10 seconds on your machined
 even if the other change doesn't work.  The timeout is still too large
 for i386's.
 
 diff -c2 clock.c~ clock.c
 *** clock.c~	Mon Apr  7 19:36:15 1997
 --- clock.c	Thu Apr 24 03:08:45 1997
 ***************
 *** 504,509 ****
 --- 568,576 ----
   writertc(u_char reg, u_char val)
   {
 + 	inb(0x84);
   	outb(IO_RTC, reg);
 + 	inb(0x84);
   	outb(IO_RTC + 1, val);
 + 	inb(0x84);		/* XXX work around wrong order in rtcin() */
   }
   
 ***************
 *** 524,528 ****
   	if (!(rtcin(RTC_STATUSD) & RTCSD_PWR))
   		goto fail;
 ! 	timeout = 100000000;
   
   	/* Read the mc146818A seconds counter. */
 --- 591,595 ----
   	if (!(rtcin(RTC_STATUSD) & RTCSD_PWR))
   		goto fail;
 ! 	timeout = 1000000;	/* XXX */
   
   	/* Read the mc146818A seconds counter. */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704231720.KAA11053>