radeon lockups with drm/dri
Alfred Perlstein
alfred at freebsd.org
Wed Feb 22 10:11:46 PST 2006
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 -
More information about the freebsd-multimedia
mailing list