Message ID | 20170308141257.12119-16-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Reviewed-by: Christian König <christian.koenig@amd.com> for this one and #19. Christian. Am 08.03.2017 um 15:12 schrieb Daniel Vetter: > Again no apparent explanation for the split except hysterical raisins. > Merging them also makes it a bit more obviuos what's going on wrt the > runtime pm refdancing. > > Cc: Alex Deucher <alexander.deucher@amd.com> > Cc: Christian König <christian.koenig@amd.com> > Cc: amd-gfx@lists.freedesktop.org > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > --- > drivers/gpu/drm/radeon/radeon_drv.c | 3 --- > drivers/gpu/drm/radeon/radeon_kms.c | 42 +++++++++++++------------------------ > 2 files changed, 14 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index 956c425e639e..312436a8d9e5 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -108,8 +108,6 @@ void radeon_driver_lastclose_kms(struct drm_device *dev); > int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv); > void radeon_driver_postclose_kms(struct drm_device *dev, > struct drm_file *file_priv); > -void radeon_driver_preclose_kms(struct drm_device *dev, > - struct drm_file *file_priv); > int radeon_suspend_kms(struct drm_device *dev, bool suspend, > bool fbcon, bool freeze); > int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon); > @@ -538,7 +536,6 @@ static struct drm_driver kms_driver = { > DRIVER_PRIME | DRIVER_RENDER, > .load = radeon_driver_load_kms, > .open = radeon_driver_open_kms, > - .preclose = radeon_driver_preclose_kms, > .postclose = radeon_driver_postclose_kms, > .lastclose = radeon_driver_lastclose_kms, > .set_busid = drm_pci_set_busid, > diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c > index 56f35c06742c..a32a62e03a44 100644 > --- a/drivers/gpu/drm/radeon/radeon_kms.c > +++ b/drivers/gpu/drm/radeon/radeon_kms.c > @@ -691,13 +691,26 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) > * @dev: drm dev pointer > * @file_priv: drm file > * > - * On device post close, tear down vm on cayman+ (all asics). > + * On device close, tear down hyperz and cmask filps on r1xx-r5xx > + * (all asics). And tear down vm on cayman+ (all asics). > */ > void radeon_driver_postclose_kms(struct drm_device *dev, > struct drm_file *file_priv) > { > struct radeon_device *rdev = dev->dev_private; > > + pm_runtime_get_sync(dev->dev); > + > + mutex_lock(&rdev->gem.mutex); > + if (rdev->hyperz_filp == file_priv) > + rdev->hyperz_filp = NULL; > + if (rdev->cmask_filp == file_priv) > + rdev->cmask_filp = NULL; > + mutex_unlock(&rdev->gem.mutex); > + > + radeon_uvd_free_handles(rdev, file_priv); > + radeon_vce_free_handles(rdev, file_priv); > + > /* new gpu have virtual address space support */ > if (rdev->family >= CHIP_CAYMAN && file_priv->driver_priv) { > struct radeon_fpriv *fpriv = file_priv->driver_priv; > @@ -721,33 +734,6 @@ void radeon_driver_postclose_kms(struct drm_device *dev, > pm_runtime_put_autosuspend(dev->dev); > } > > -/** > - * radeon_driver_preclose_kms - drm callback for pre close > - * > - * @dev: drm dev pointer > - * @file_priv: drm file > - * > - * On device pre close, tear down hyperz and cmask filps on r1xx-r5xx > - * (all asics). > - */ > -void radeon_driver_preclose_kms(struct drm_device *dev, > - struct drm_file *file_priv) > -{ > - struct radeon_device *rdev = dev->dev_private; > - > - pm_runtime_get_sync(dev->dev); > - > - mutex_lock(&rdev->gem.mutex); > - if (rdev->hyperz_filp == file_priv) > - rdev->hyperz_filp = NULL; > - if (rdev->cmask_filp == file_priv) > - rdev->cmask_filp = NULL; > - mutex_unlock(&rdev->gem.mutex); > - > - radeon_uvd_free_handles(rdev, file_priv); > - radeon_vce_free_handles(rdev, file_priv); > -} > - > /* > * VBlank related functions. > */
On Wed, Mar 8, 2017 at 9:25 AM, Christian König <christian.koenig@amd.com> wrote: > Reviewed-by: Christian König <christian.koenig@amd.com> for this one and > #19. Applied both. Thanks! Alex > > Christian. > > > Am 08.03.2017 um 15:12 schrieb Daniel Vetter: >> >> Again no apparent explanation for the split except hysterical raisins. >> Merging them also makes it a bit more obviuos what's going on wrt the >> runtime pm refdancing. >> >> Cc: Alex Deucher <alexander.deucher@amd.com> >> Cc: Christian König <christian.koenig@amd.com> >> Cc: amd-gfx@lists.freedesktop.org >> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> >> --- >> drivers/gpu/drm/radeon/radeon_drv.c | 3 --- >> drivers/gpu/drm/radeon/radeon_kms.c | 42 >> +++++++++++++------------------------ >> 2 files changed, 14 insertions(+), 31 deletions(-) >> >> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c >> b/drivers/gpu/drm/radeon/radeon_drv.c >> index 956c425e639e..312436a8d9e5 100644 >> --- a/drivers/gpu/drm/radeon/radeon_drv.c >> +++ b/drivers/gpu/drm/radeon/radeon_drv.c >> @@ -108,8 +108,6 @@ void radeon_driver_lastclose_kms(struct drm_device >> *dev); >> int radeon_driver_open_kms(struct drm_device *dev, struct drm_file >> *file_priv); >> void radeon_driver_postclose_kms(struct drm_device *dev, >> struct drm_file *file_priv); >> -void radeon_driver_preclose_kms(struct drm_device *dev, >> - struct drm_file *file_priv); >> int radeon_suspend_kms(struct drm_device *dev, bool suspend, >> bool fbcon, bool freeze); >> int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon); >> @@ -538,7 +536,6 @@ static struct drm_driver kms_driver = { >> DRIVER_PRIME | DRIVER_RENDER, >> .load = radeon_driver_load_kms, >> .open = radeon_driver_open_kms, >> - .preclose = radeon_driver_preclose_kms, >> .postclose = radeon_driver_postclose_kms, >> .lastclose = radeon_driver_lastclose_kms, >> .set_busid = drm_pci_set_busid, >> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c >> b/drivers/gpu/drm/radeon/radeon_kms.c >> index 56f35c06742c..a32a62e03a44 100644 >> --- a/drivers/gpu/drm/radeon/radeon_kms.c >> +++ b/drivers/gpu/drm/radeon/radeon_kms.c >> @@ -691,13 +691,26 @@ int radeon_driver_open_kms(struct drm_device *dev, >> struct drm_file *file_priv) >> * @dev: drm dev pointer >> * @file_priv: drm file >> * >> - * On device post close, tear down vm on cayman+ (all asics). >> + * On device close, tear down hyperz and cmask filps on r1xx-r5xx >> + * (all asics). And tear down vm on cayman+ (all asics). >> */ >> void radeon_driver_postclose_kms(struct drm_device *dev, >> struct drm_file *file_priv) >> { >> struct radeon_device *rdev = dev->dev_private; >> + pm_runtime_get_sync(dev->dev); >> + >> + mutex_lock(&rdev->gem.mutex); >> + if (rdev->hyperz_filp == file_priv) >> + rdev->hyperz_filp = NULL; >> + if (rdev->cmask_filp == file_priv) >> + rdev->cmask_filp = NULL; >> + mutex_unlock(&rdev->gem.mutex); >> + >> + radeon_uvd_free_handles(rdev, file_priv); >> + radeon_vce_free_handles(rdev, file_priv); >> + >> /* new gpu have virtual address space support */ >> if (rdev->family >= CHIP_CAYMAN && file_priv->driver_priv) { >> struct radeon_fpriv *fpriv = file_priv->driver_priv; >> @@ -721,33 +734,6 @@ void radeon_driver_postclose_kms(struct drm_device >> *dev, >> pm_runtime_put_autosuspend(dev->dev); >> } >> -/** >> - * radeon_driver_preclose_kms - drm callback for pre close >> - * >> - * @dev: drm dev pointer >> - * @file_priv: drm file >> - * >> - * On device pre close, tear down hyperz and cmask filps on r1xx-r5xx >> - * (all asics). >> - */ >> -void radeon_driver_preclose_kms(struct drm_device *dev, >> - struct drm_file *file_priv) >> -{ >> - struct radeon_device *rdev = dev->dev_private; >> - >> - pm_runtime_get_sync(dev->dev); >> - >> - mutex_lock(&rdev->gem.mutex); >> - if (rdev->hyperz_filp == file_priv) >> - rdev->hyperz_filp = NULL; >> - if (rdev->cmask_filp == file_priv) >> - rdev->cmask_filp = NULL; >> - mutex_unlock(&rdev->gem.mutex); >> - >> - radeon_uvd_free_handles(rdev, file_priv); >> - radeon_vce_free_handles(rdev, file_priv); >> -} >> - >> /* >> * VBlank related functions. >> */ > > > > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 956c425e639e..312436a8d9e5 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -108,8 +108,6 @@ void radeon_driver_lastclose_kms(struct drm_device *dev); int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv); void radeon_driver_postclose_kms(struct drm_device *dev, struct drm_file *file_priv); -void radeon_driver_preclose_kms(struct drm_device *dev, - struct drm_file *file_priv); int radeon_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon, bool freeze); int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon); @@ -538,7 +536,6 @@ static struct drm_driver kms_driver = { DRIVER_PRIME | DRIVER_RENDER, .load = radeon_driver_load_kms, .open = radeon_driver_open_kms, - .preclose = radeon_driver_preclose_kms, .postclose = radeon_driver_postclose_kms, .lastclose = radeon_driver_lastclose_kms, .set_busid = drm_pci_set_busid, diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index 56f35c06742c..a32a62e03a44 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@ -691,13 +691,26 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) * @dev: drm dev pointer * @file_priv: drm file * - * On device post close, tear down vm on cayman+ (all asics). + * On device close, tear down hyperz and cmask filps on r1xx-r5xx + * (all asics). And tear down vm on cayman+ (all asics). */ void radeon_driver_postclose_kms(struct drm_device *dev, struct drm_file *file_priv) { struct radeon_device *rdev = dev->dev_private; + pm_runtime_get_sync(dev->dev); + + mutex_lock(&rdev->gem.mutex); + if (rdev->hyperz_filp == file_priv) + rdev->hyperz_filp = NULL; + if (rdev->cmask_filp == file_priv) + rdev->cmask_filp = NULL; + mutex_unlock(&rdev->gem.mutex); + + radeon_uvd_free_handles(rdev, file_priv); + radeon_vce_free_handles(rdev, file_priv); + /* new gpu have virtual address space support */ if (rdev->family >= CHIP_CAYMAN && file_priv->driver_priv) { struct radeon_fpriv *fpriv = file_priv->driver_priv; @@ -721,33 +734,6 @@ void radeon_driver_postclose_kms(struct drm_device *dev, pm_runtime_put_autosuspend(dev->dev); } -/** - * radeon_driver_preclose_kms - drm callback for pre close - * - * @dev: drm dev pointer - * @file_priv: drm file - * - * On device pre close, tear down hyperz and cmask filps on r1xx-r5xx - * (all asics). - */ -void radeon_driver_preclose_kms(struct drm_device *dev, - struct drm_file *file_priv) -{ - struct radeon_device *rdev = dev->dev_private; - - pm_runtime_get_sync(dev->dev); - - mutex_lock(&rdev->gem.mutex); - if (rdev->hyperz_filp == file_priv) - rdev->hyperz_filp = NULL; - if (rdev->cmask_filp == file_priv) - rdev->cmask_filp = NULL; - mutex_unlock(&rdev->gem.mutex); - - radeon_uvd_free_handles(rdev, file_priv); - radeon_vce_free_handles(rdev, file_priv); -} - /* * VBlank related functions. */
Again no apparent explanation for the split except hysterical raisins. Merging them also makes it a bit more obviuos what's going on wrt the runtime pm refdancing. Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Christian König <christian.koenig@amd.com> Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- drivers/gpu/drm/radeon/radeon_drv.c | 3 --- drivers/gpu/drm/radeon/radeon_kms.c | 42 +++++++++++++------------------------ 2 files changed, 14 insertions(+), 31 deletions(-)