On 2013.12.11 at 23:46 +0000, Deucher, Alexander wrote: > > -----Original Message----- > > From: Peter Chubb [mailto:peter.chubb@xxxxxxxxxxxx] > > Sent: Wednesday, December 11, 2013 5:11 PM > > To: Markus Trippelsdorf > > Cc: Peter Chubb; Deucher, Alexander; airlied@xxxxxxxx; dri- > > devel@xxxxxxxxxxxxxxxxxxxxx > > Subject: Re: Can no longer shutdown after drm/radeon: Implement > > radeon_pci_shutdown > > > > >>>>> "Markus" == Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx> writes: > > > > Markus> On 2013.12.11 at 11:37 +1100, Peter Chubb wrote: > > > > Markus> It would be interesting to know where exactly it hangs. Could > > Markus> you comment out the *_fini(rdev) calls in > > Markus> radeon_driver_unload_kms > > (drivers/gpu/drm/radeon/radeon_kms.c) > > Markus> one after the other to find out which one is responsible? > > > > It's radeon_device_fini() that is the problem. > > I think the problem is that the drm subsystem tears down the device > via drm_driver.unload in drm_dev_unregister(), but now that we have a > pci_driver.shutdown callback (which is needed for kexec) that gets > called too so the driver gets torn down twice. If that is the case the following patch should fix the issue. Can you give it a try, Peter? diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index 55d0b474bd37..539e5f1ff5e3 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@ -59,7 +59,8 @@ int radeon_driver_unload_kms(struct drm_device *dev) radeon_acpi_fini(rdev); radeon_modeset_fini(rdev); - radeon_device_fini(rdev); + if (!rdev->shutdown) + radeon_device_fini(rdev); done_free: kfree(rdev); -- Markus _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel