> Date: Sat, 14 Nov 2015 14:36:11 +0100
> From: Lubos Boucek <[email protected]>
>
> trace
> -----
> rw_enter_write()
> drm_modeset_lock_all()
> radeon_driver_lastclose_kms()
> drm_lastclose()
> drm_detach()
> config_detach()
> radeondrm_detach_kms()
> config_detach()
> radeondrm_forcedetach()
> radeondrm_attachhook()
> dohooks()
> main()
Does the diff below fix the problem for you?
Index: radeon_kms.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/radeon/radeon_kms.c,v
retrieving revision 1.42
diff -u -p -r1.42 radeon_kms.c
--- radeon_kms.c 27 Sep 2015 16:13:23 -0000 1.42
+++ radeon_kms.c 14 Nov 2015 14:14:11 -0000
@@ -1091,13 +1091,16 @@ int radeon_driver_firstopen_kms(struct d
void radeon_driver_lastclose_kms(struct drm_device *dev)
{
struct radeon_device *rdev = dev->dev_private;
+ struct drm_fb_helper *fb_helper = (void *)rdev->mode_info.rfbdev;
#ifdef __sparc64__
fbwscons_setcolormap(&rdev->sf, radeondrm_setcolor);
#endif
- drm_modeset_lock_all(dev);
- drm_fb_helper_restore_fbdev_mode((void *)rdev->mode_info.rfbdev);
- drm_modeset_unlock_all(dev);
+ if (rdev->mode_info.mode_config_initialized) {
+ drm_modeset_lock_all(dev);
+ drm_fb_helper_restore_fbdev_mode(fb_helper);
+ drm_modeset_unlock_all(dev);
+ }
#ifdef notyet
vga_switcheroo_process_delayed_switch();
#endif