svn commit: r287673 - head/sys/dev/drm2/radeon
Andriy Gapon
avg at FreeBSD.org
Fri Sep 11 15:51:21 UTC 2015
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;
More information about the svn-src-all
mailing list