Yes, thank you!

On Sat, Nov 14, 2015 at 3:16 PM, Mark Kettenis <[email protected]>
wrote:

> > 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
>



-- 
Lubos Boucek <[email protected]>

Reply via email to