Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jun 2010 23:10:57 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Doug Barton <dougb@FreeBSD.org>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: Timer panic on boot (r209434)
Message-ID:  <4C2118D1.3080903@FreeBSD.org>
In-Reply-To: <4C2115D2.5080504@FreeBSD.org>
References:  <4C211538.1040808@FreeBSD.org> <4C2115D2.5080504@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------030706010608010307010605
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Doug Barton wrote:
> On 06/22/10 12:55, Doug Barton wrote:
>> Howdy,
>>
>> I tried upgrading from r209351 to r209434 and got a panic related to the
>> timer stuff while booting. You can see the panic and the backtrace here:
>>
>> http://people.freebsd.org/~dougb/timer-panic-1.jpg
>> http://people.freebsd.org/~dougb/timer-panic-2.jpg
>> http://people.freebsd.org/~dougb/timer-panic-3.jpg
> 
> Hmmm, that could use a little more detail. :)  I have a Dell laptop with
> a core 2 duo processor, running 9-current SMP i386.

Your ACPI seems reports that attimer uses IRQ2, instead of usual IRQ0.
It is either a bug, or it is a very rare feature.

I am not sure it is not a hack, but you may try attached patch. If it
helps, it would be nice it you tried to use i8254 event timer, to check
is this a bug or feature.

-- 
Alexander Motin

--------------030706010608010307010605
Content-Type: text/plain;
 name="norid.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="norid.patch"

diff -ruNp sys/isa.prev/atrtc.c sys/isa/atrtc.c
--- sys/isa.prev/atrtc.c	2010-06-22 23:01:13.000000000 +0300
+++ sys/isa/atrtc.c	2010-06-22 23:01:38.000000000 +0300
@@ -259,6 +259,7 @@ atrtc_attach(device_t dev)
 	if (!atrtcclock_disable &&
 	    (resource_int_value(device_get_name(dev), device_get_unit(dev),
 	     "clock", &i) != 0 || i != 0)) {
+	    	sc->intr_rid = -1;
 		if (!(sc->intr_res = bus_alloc_resource(dev, SYS_RES_IRQ,
 		    &sc->intr_rid, 8, 8, 1, RF_ACTIVE))) {
 			device_printf(dev,"Can't map interrupt.\n");
diff -ruNp sys/isa.prev/clock.c sys/isa/clock.c
--- sys/isa.prev/clock.c	2010-06-22 20:19:00.000000000 +0300
+++ sys/isa/clock.c	2010-06-22 23:01:27.000000000 +0300
@@ -535,6 +535,7 @@ attimer_attach(device_t dev)
 	tc_init(&sc->tc);
 	if (resource_int_value(device_get_name(dev), device_get_unit(dev),
 	    "clock", &i) != 0 || i != 0) {
+	    	sc->intr_rid = -1;
 		if (!(sc->intr_res = bus_alloc_resource(dev, SYS_RES_IRQ,
 		    &sc->intr_rid, 0, 0, 1, RF_ACTIVE))) {
 			device_printf(dev,"Can't map interrupt.\n");

--------------030706010608010307010605--



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