[PATCH] drm/amdgpu: just suspend the hw on pci shutdown

Mike Lothian mike at fireburn.co.uk
Wed Dec 7 04:59:34 UTC 2016


Feel free to add a reported and tested by flag

Thanks for sorting this

On Tue, 6 Dec 2016 at 22:55 Alex Deucher <alexdeucher at gmail.com> wrote:

> 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
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: stable at vger.kernel.org
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h        | 1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    | 5 ++++-
>  3 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 946dfcc..123f8152 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1714,6 +1714,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);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 4701d94..8b39fd3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1530,7 +1530,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;
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 3210081..6e4e3a1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -486,12 +486,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)
> --
> 2.5.5
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20161207/38fc2212/attachment.html>


More information about the amd-gfx mailing list