Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Feb 2006 10:11:46 -0800
From:      Alfred Perlstein <alfred@freebsd.org>
To:        anholt@freebsd.org, multimedia@freebsd.org
Subject:   radeon lockups with drm/dri
Message-ID:  <20060222181146.GB73389@elvis.mu.org>

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

I've had a couple of times where my X server went bonkers
and wouldn't respond to "kill -9" I think this has to do
with the hardware going for a nap.

Basically the X server gets stuck in "rdnrel".

This is in:
dev/drm/radeon_cp.c:radeon_do_release()

                if (dev_priv->cp_running) {
                        /* Stop the cp */
                        while ((ret = radeon_do_cp_idle(dev_priv)) != 0) {
                                DRM_DEBUG("radeon_do_cp_idle %d\n", ret);
#ifdef __linux__
                                schedule();
#else
#if defined(__FreeBSD__) && __FreeBSD_version > 500000
                                msleep(&ret, &dev->dev_lock, PZERO, "rdnrel",
                                       1);
#else
                                tsleep(&ret, PZERO, "rdnrel", 1);
#endif
#endif
                        }
                        radeon_do_cp_stop(dev_priv);
                        radeon_do_engine_reset(dev);
                }

It appears that "radeon_do_cp_idle" fails over and over leading
to an unkillable X server.

Can this loop be changed to abort after a number of retries?

Is a way to force a reset of the device when this happens?

thank you!
-- 
- Alfred Perlstein
- CTO Okcupid.com / FreeBSD Hacker / All that jazz -



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