radeon panic: mtx_lock() of destroyed mutex @
/usr/src/sys/modules/drm/radeon/../../../dev/drm/radeon_irq.c:128
Gavin Atkinson
gavin.atkinson at ury.york.ac.uk
Mon Dec 18 10:12:08 PST 2006
On Mon, 2006-12-18 at 16:58 +0000, Gavin Atkinson wrote:
> I've determined that this lock has been destroyed even before glxgears
> runs - I guess it's just the first attempt at 3D rendering that triggers
> it?
Indeed, what's happening is that something calls drm_irq_install() in
src/sys/dev/drm/drm_irq.c. This code fails to allocate a resource:
dev->irqrid = 0;
dev->irqr = bus_alloc_resource_any(dev->device, SYS_RES_IRQ,
&dev->irqrid, RF_SHAREABLE);
The error handler is then called, which destroys the IRQ mutex. This
all happens while X is initialising.
Later on, when glxgears is run, radeon_wait_irq() in
src/sys/dev/drm/radeon_irq.c is called, which does a DRM_WAIT_ON, which
tries to acquire the destroyed mutex.
So, it looks like there should be some checking somewhere that
dev->irq_enabled is non-zero before trying to acquire this mutex. I
don't know where it should go, though.
Gavin
More information about the freebsd-stable
mailing list