On Wed, Mar 26, 2014 at 12:09 AM, Dave Airlie <airlied@xxxxxxxxx> wrote: > From: Dave Airlie <airlied@xxxxxxxxxx> > > If we were on a non-optimus device, we'd return -EINVAL, this would > lead to the over engineered runtime pm system to go into an error > state, subsequent get_sync's would fail, so we'd never be able > to open the device again. > > (like really get_sync shouldn't fail if the device isn't powered > down). Any chance you'd want to spin similar patches for radeon? Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > > Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> > --- > drivers/gpu/drm/nouveau/nouveau_drm.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 89c484d..4ee702a 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -866,13 +866,16 @@ static int nouveau_pmops_runtime_suspend(struct device *dev) > struct drm_device *drm_dev = pci_get_drvdata(pdev); > int ret; > > - if (nouveau_runtime_pm == 0) > - return -EINVAL; > + if (nouveau_runtime_pm == 0) { > + pm_runtime_forbid(dev); > + return -EBUSY; > + } > > /* are we optimus enabled? */ > if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { > DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); > - return -EINVAL; > + pm_runtime_forbid(dev); > + return -EBUSY; > } > > nv_debug_level(SILENT); > @@ -923,12 +926,15 @@ static int nouveau_pmops_runtime_idle(struct device *dev) > struct nouveau_drm *drm = nouveau_drm(drm_dev); > struct drm_crtc *crtc; > > - if (nouveau_runtime_pm == 0) > + if (nouveau_runtime_pm == 0) { > + pm_runtime_forbid(dev); > return -EBUSY; > + } > > /* are we optimus enabled? */ > if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) { > DRM_DEBUG_DRIVER("failing to power off - not optimus\n"); > + pm_runtime_forbid(dev); > return -EBUSY; > } > > -- > 1.8.3.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel