Am 22.08.2016 um 20:30 schrieb Alex Deucher: > Normally on shutdown or reboot we don't care about necessarily > making sure the hw is in a good state because the system is about > to be powered down or reset. However, after a shutdown or reboot > in a VM, it's best to tear down the hw properly otherwise there > can be problems with the next VM use. > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> Both patches are Reviewed-by: Christian König <christian.koenig at amd.com> Regards, Christian. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 5c7a77b..0da4336 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -392,6 +392,19 @@ amdgpu_pci_remove(struct pci_dev *pdev) > drm_put_dev(dev); > } > > +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 > + */ > + if (adev->virtualization.is_virtual) > + amdgpu_pci_remove(pdev); > +} > + > static int amdgpu_pmops_suspend(struct device *dev) > { > struct pci_dev *pdev = to_pci_dev(dev); > @@ -605,6 +618,7 @@ static struct pci_driver amdgpu_kms_pci_driver = { > .id_table = pciidlist, > .probe = amdgpu_pci_probe, > .remove = amdgpu_pci_remove, > + .shutdown = amdgpu_pci_shutdown, > .driver.pm = &amdgpu_pm_ops, > }; >