Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Sep 2015 15:51:21 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r287673 - head/sys/dev/drm2/radeon
Message-ID:  <201509111551.t8BFpLOC011754@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509111551.t8BFpLOC011754>