Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Jun 2004 20:40:40 +0200
From:      Alexander Marx <mad-ml@madness.at>
To:        freebsd-current@freebsd.org
Subject:   Re: Thinkpad panic woes (was Re: CDRW causes Thinkpad T41 to panic)
Message-ID:  <40C8AB28.709@madness.at>
In-Reply-To: <Pine.GSO.4.10.10406031017330.24146-100000@pcnet5.pcnet.com>
References:  <Pine.GSO.4.10.10406031017330.24146-100000@pcnet5.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Daniel Eischen wrote:
> My drive is on ata1-master, not the slave.  From what I can see,
> the failure for ata1-slave at boot up isn't a problem because
> there is no device present on that channel.  Once booted, I was
> able to use xmcd and play an audio CD on it, so it is at least
> working well enough for that.  5.2.1-RELEASE doesn't show the
> "ata1-slave FAILURE - ATAPI_IDENTIFY" message and booted just
> fine -- there were no "Memory modified after free" messages
> (and panic).  I did have to disable ACPI in order to get
> 5.2.1-RELEASE to work, though.
> 

well, i've the very same problem here with a my thinkpad t40.

5.2.1 works only w/o acpi, 5.2 and -CURRENT (as of yesterday)
do not work at all with the cd/dvd present.

the panic w/ trace and a dmesg (boot -v but w/o cd/dvd)
is available here:

      [0] http://www.madness.at/~mad/tp40panic/


> The "memory modified after free" bothers me.  It indicates
> that either something is running amok with pointers, or that
> references are still being made after memory is free()'d.
> I've been trying to track it down, but I haven't had any
> luck so far.  Anyone have any ideas on how to debug this?
> 

i tried to track the alloc/free's with some printf's
and discovered, that setting the retries=1 in ata-all.c
fixed it the panic in -current; my -current then boots with
acpi enabled and the cd/dvd present, without problem.

the patch:

--- ata-all.c.orig	Thu Jun 10 20:17:18 2004
+++ ata-all.c	Thu Jun 10 20:16:35 2004
@@ -560,7 +560,7 @@
      if (atadev->param) {
  	request = ata_alloc_request();
  	if (request) {
-	    int retries = 2;
+	    int retries = 1;
  	    while (retries-- > 0) {
  		request->device = atadev;
  		request->timeout = 5;


a dmesg w/ boot -v is available[0].

ofcourse this probably does not fix the real problem.
but it works-for-me(tm).


regards,
alex.


ps: btw, my hang on shutdown w/ seems to have disappeard
     with this too ...





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