Date: Sun, 11 Jul 2010 13:28:34 +0300 From: Alexander Motin <mav@FreeBSD.org> To: Doug Barton <dougb@FreeBSD.org> Cc: raoul <rmgls@free.fr>, freebsd-current@freebsd.org Subject: Re: panic on dell laptop Message-ID: <4C399CD2.7010804@FreeBSD.org> In-Reply-To: <4C38B7F4.8040109@FreeBSD.org> References: <20100710074455.4E516818130@smtp3-g21.free.fr> <4C38B7F4.8040109@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------020909050304040708050602
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Doug Barton wrote:
> Try backing up to svn r209633 and see if you can boot. What you're
> describing is identical to a panic I had starting with the next
> revision, also on a Dell laptop.
Please try attached patch against HEAD.
--
Alexander Motin
--------------020909050304040708050602
Content-Type: text/plain;
name="timers.res.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="timers.res.patch"
diff -ruNp isa.prev/atrtc.c isa/atrtc.c
--- isa.prev/atrtc.c 2010-07-11 11:43:18.000000000 +0300
+++ isa/atrtc.c 2010-07-11 12:33:49.000000000 +0300
@@ -244,6 +244,7 @@ static int
atrtc_attach(device_t dev)
{
struct atrtc_softc *sc;
+ u_long s;
int i, diag;
sc = device_get_softc(dev);
@@ -260,7 +261,9 @@ atrtc_attach(device_t dev)
(resource_int_value(device_get_name(dev), device_get_unit(dev),
"clock", &i) != 0 || i != 0)) {
sc->intr_rid = 0;
- bus_delete_resource(dev, SYS_RES_IRQ, sc->intr_rid);
+ while (bus_get_resource(dev, SYS_RES_IRQ, sc->intr_rid,
+ &s, NULL) == 0 && s != 8)
+ sc->intr_rid++;
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 isa.prev/clock.c isa/clock.c
--- isa.prev/clock.c 2010-07-11 11:43:24.000000000 +0300
+++ isa/clock.c 2010-07-11 13:25:45.000000000 +0300
@@ -94,7 +94,8 @@ static int i8254_ticked;
struct attimer_softc {
int intr_en;
- int intr_rid;
+ int port_rid, intr_rid;
+ struct resource *port_res;
struct resource *intr_res;
void *intr_handler;
struct timecounter tc;
@@ -523,10 +524,14 @@ static int
attimer_attach(device_t dev)
{
struct attimer_softc *sc;
+ u_long s;
int i;
attimer_sc = sc = device_get_softc(dev);
bzero(sc, sizeof(struct attimer_softc));
+ if (!(sc->port_res = bus_alloc_resource(dev, SYS_RES_IOPORT,
+ &sc->port_rid, IO_TIMER1, IO_TIMER1 + 3, 4, RF_ACTIVE)))
+ device_printf(dev,"Warning: Couldn't map I/O.\n");
i8254_intsrc = intr_lookup_source(0);
if (i8254_intsrc != NULL)
i8254_pending = i8254_intsrc->is_pic->pic_source_pending;
@@ -541,7 +546,9 @@ attimer_attach(device_t dev)
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
"clock", &i) != 0 || i != 0) {
sc->intr_rid = 0;
- bus_delete_resource(dev, SYS_RES_IRQ, sc->intr_rid);
+ while (bus_get_resource(dev, SYS_RES_IRQ, sc->intr_rid,
+ &s, NULL) == 0 && s != 0)
+ sc->intr_rid++;
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");
--------------020909050304040708050602--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C399CD2.7010804>
