Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 17:28:34 +0200
From:      Tijl Coosemans <tijl@ulyssis.org>
To:        freebsd-hackers@freebsd.org, Robert Noland <rnoland@freebsd.org>
Cc:        xorquewasp@googlemail.com
Subject:   Re: diagnosing freezes (DRI?)
Message-ID:  <200904141728.36178.tijl@ulyssis.org>
In-Reply-To: <1239388293.1922.80.camel@balrog.2hip.net>
References:  <20090410132354.GA20721@logik.internal.network> <20090410175922.GA50520@logik.internal.network> <1239388293.1922.80.camel@balrog.2hip.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_kuK5JYWDptkZsu3
Content-Type: text/plain;
  charset="iso-8859-15"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Friday 10 April 2009 20:31:33 Robert Noland wrote:
> On Fri, 2009-04-10 at 18:59 +0100, xorquewasp@googlemail.com wrote:
>> The system doesn't seem to have frozen since DRI/DRM was disabled.
>> 
>> I did have one crash/reboot whilst building a large number of
>> packages with tinderbox. I've currently got both tinderbox and a
>> make -j 16 buildworld going on a loop in the hope that I can trigger
>> it again.
>> 
>> Being the idiot I am, I had encrypted swap enabled and so savecore
>> didn't save anything. Won't make that mistake twice.
>> 
>> I'm currently using a world compiled WITH_DEBUG but is there
>> anything else I can do?
> 
> If it is locking the whole system, then a core is really our best
> shot. If you can extract anything useful from xorg.log or setting
> hw.dri.0.debug that also might be of use.
> 
> I'm running on 2 cores, but it is possible that some locking issue
> exists.  All of the driver specific ioctls are run under a lock
> though.

I have the same problem with a Radeon Mobility 9700 (r300) on 7-STABLE.
The entire system freezes, but it happens very rarely. I took a quick
look at the drm code for locking issues and found one thing that seems
suspicious. Patch attached. I'm not familiar with the code, so I don't
know if it's correct or even related this problem.

--Boundary-00=_kuK5JYWDptkZsu3
Content-Type: text/plain;
  charset="iso-8859-15";
  name="patch-drm"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="patch-drm"

--- sys/dev/drm/drm_bufs.c.orig	2009-04-11 15:10:56.000000000 +0200
+++ sys/dev/drm/drm_bufs.c	2009-04-11 15:11:33.000000000 +0200
@@ -173,7 +173,6 @@
 			/* Prevent a 2nd X Server from creating a 2nd lock */
 			DRM_LOCK();
 			if (dev->lock.hw_lock != NULL) {
-				DRM_UNLOCK();
 				free(map->handle, DRM_MEM_MAPS);
 				free(map, DRM_MEM_MAPS);
 				return EBUSY;

--Boundary-00=_kuK5JYWDptkZsu3--



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