Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 06 Mar 2002 08:49:18 +0100
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        qhwt@myrealbox.com
Cc:        current@FreeBSD.ORG
Subject:   Re: Won't boot after the commits to timecounter code 
Message-ID:  <91591.1015400958@critter.freebsd.dk>
In-Reply-To: Your message of "Wed, 06 Mar 2002 14:45:15 %2B0900." <20020306054514.GA395@gzl> 

next in thread | previous in thread | raw e-mail | index | archive | help

The only thing I know off right now is this thing from BDE which
I havn't been able to verify yet:



============================================================================
From:    Bruce Evans <bde@zeta.org.au>
Subject: dummy_timecounter broken; breaks booting with -d
To:      <phk@freebsd.org>
Message-Id: <20020305075815.D2623-100000@gamplex.bde.org>
Date:    Tue, 05 Mar 2002 08:09:26 +1100

%%%
Index: kern_tc.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_tc.c,v
retrieving revision 1.116
diff -u -2 -r1.116 kern_tc.c
--- kern_tc.c	26 Feb 2002 09:16:27 -0000	1.116
+++ kern_tc.c	4 Mar 2002 21:08:03 -0000
@@ -192,4 +252,14 @@
 		gen = tc->tc_generation;
 		bintime2timeval(&tc->tc_offset, tvp);
+		/*
+		 * XXX dummy_timecounter is now broken.  Its tc_get_timecount
+		 * needs to be called before it works, and that doesn't
+		 * always happen naturally.  In particular, we spin forever
+		 * here after booting with -d unless we do an unnatural call
+		 * here, since the screen timeout code is always run on entry
+		 * to ddb, and it calls here.
+		 */
+		if (gen == 0 && timecounter == &dummy_timecounter)
+			(void)tc->tc_get_timecount(tc);
 	} while (gen == 0 || gen != tc->tc_generation);
 }
%%%

Bruce


In message <20020306054514.GA395@gzl>, qhwt@myrealbox.com writes:
>Hello.
>After upgrading to the kernel as of 2002-03-03 00:00:00(UTC), it stopped
>booting just after the message:
>
>Timecounter "i8254"  frequency 1193182 Hz
>
>With some debugging printf()'s inserted, I found it was tc->tc_get_timecount()
>called from tco_delta() called just after the bcopy() in tc_windup().
>So maybe the next place I have to look at is i8254_get_timecount(), which is in
>/sys/i386/isa/clock.c, but the last (effective) commit to this file is
>revision 1.180(at the end of January).
>
>I couldn't even drop into DDB; no response other than to power button.
>The last bootable(and stable so far) kernel is from 2002-02-24.
>I don't think this is caused by some leftover in the work directory
>since I always build kernels in a new empty directory under /usr/obj.
>
>Any (clue|fix)\?
>
>To Unsubscribe: send mail to majordomo@FreeBSD.org
>with "unsubscribe freebsd-current" in the body of the message
>

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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