Author: avg
Date: Fri Sep 11 15:51:20 2015
New Revision: 287673
URL: https://svnweb.freebsd.org/changeset/base/287673

Log:
  radeon_suspend_kms: don't mess with pci state that's managed by the bus
  
  The pci bus driver handles the power state, it also manages
  configuration state saving and restoring for its child devices.  Thus a
  PCI device driver does not have to worry about those things.  In fact, I
  observe a hard system hang when trying to suspend a system with active
  radeonkms driver where both the bus driver and radeonkms driver try to
  do the same thing.  I suspect that it could be because of an access to a
  PCI configuration register after the device is placed into D3 state.
  
  Reviewed by:  dumbbell, jhb
  MFC after:    13 days
  Differential Revision:        https://reviews.freebsd.org/D3561

Modified:
  head/sys/dev/drm2/radeon/radeon_device.c

Modified: head/sys/dev/drm2/radeon/radeon_device.c
==============================================================================
--- head/sys/dev/drm2/radeon/radeon_device.c    Fri Sep 11 15:37:05 2015        
(r287672)
+++ head/sys/dev/drm2/radeon/radeon_device.c    Fri Sep 11 15:51:20 2015        
(r287673)
@@ -1342,14 +1342,10 @@ int radeon_suspend_kms(struct drm_device
 
        radeon_agp_suspend(rdev);
 
-       pci_save_state(device_get_parent(dev->dev));
 #ifdef FREEBSD_WIP
        if (state.event == PM_EVENT_SUSPEND) {
                /* Shut down the device */
                pci_disable_device(dev->pdev);
-#endif /* FREEBSD_WIP */
-               pci_set_powerstate(dev->dev, PCI_POWERSTATE_D3);
-#ifdef FREEBSD_WIP
        }
        console_lock();
 #endif /* FREEBSD_WIP */
@@ -1380,10 +1376,6 @@ int radeon_resume_kms(struct drm_device 
 
 #ifdef FREEBSD_WIP
        console_lock();
-#endif /* FREEBSD_WIP */
-       pci_set_powerstate(device_get_parent(dev->dev), PCI_POWERSTATE_D0);
-       pci_restore_state(device_get_parent(dev->dev));
-#ifdef FREEBSD_WIP
        if (pci_enable_device(dev->pdev)) {
                console_unlock();
                return -1;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to