Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit faefba95 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: just suspend the hw on pci shutdown

We can't just reuse pci_remove as there may be userspace still
doing things.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98638
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97980


Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reported-and-tested-by: default avatarMike Lothian <mike@fireburn.co.uk>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ab7cd8d8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2472,6 +2472,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
				 struct drm_file *file_priv);
void amdgpu_driver_preclose_kms(struct drm_device *dev,
				struct drm_file *file_priv);
int amdgpu_suspend(struct amdgpu_device *adev);
int amdgpu_device_suspend(struct drm_device *dev, bool suspend, bool fbcon);
int amdgpu_device_resume(struct drm_device *dev, bool resume, bool fbcon);
u32 amdgpu_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe);
+1 −1
Original line number Diff line number Diff line
@@ -1493,7 +1493,7 @@ static int amdgpu_fini(struct amdgpu_device *adev)
	return 0;
}

static int amdgpu_suspend(struct amdgpu_device *adev)
int amdgpu_suspend(struct amdgpu_device *adev)
{
	int i, r;

+4 −1
Original line number Diff line number Diff line
@@ -479,12 +479,15 @@ amdgpu_pci_remove(struct pci_dev *pdev)
static void
amdgpu_pci_shutdown(struct pci_dev *pdev)
{
	struct drm_device *dev = pci_get_drvdata(pdev);
	struct amdgpu_device *adev = dev->dev_private;

	/* if we are running in a VM, make sure the device
	 * torn down properly on reboot/shutdown.
	 * unfortunately we can't detect certain
	 * hypervisors so just do this all the time.
	 */
	amdgpu_pci_remove(pdev);
	amdgpu_suspend(adev);
}

static int amdgpu_pmops_suspend(struct device *dev)