From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [RFC 3/6] drm/i915: add enable_runtime_pm option Date: Mon, 28 Oct 2013 15:27:39 +0200 Message-ID: <1382966859.5775.76.camel@intelbox> References: <1382470214-1597-1-git-send-email-przanoni@gmail.com> <1382470214-1597-4-git-send-email-przanoni@gmail.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2119300259==" Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id 92CDCE5DBB for ; Mon, 28 Oct 2013 06:27:42 -0700 (PDT) In-Reply-To: <1382470214-1597-4-git-send-email-przanoni@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org --===============2119300259== Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-UrakE61HgIWEHgq3uK14" --=-UrakE61HgIWEHgq3uK14 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2013-10-22 at 17:30 -0200, Paulo Zanoni wrote: > From: Paulo Zanoni >=20 > And leave it off by default. We have way too many driver entry points, > we can't assume this will work without regressions without tons of > testing first. This option allows people to test and fix the problems. >=20 > Signed-off-by: Paulo Zanoni > --- > drivers/gpu/drm/i915/i915_dma.c | 4 ++-- > drivers/gpu/drm/i915/i915_drv.c | 8 ++++++-- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > 4 files changed, 11 insertions(+), 6 deletions(-) >=20 > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_= dma.c > index 6aa044e..dd4f424 100644 > --- a/drivers/gpu/drm/i915/i915_dma.c > +++ b/drivers/gpu/drm/i915/i915_dma.c > @@ -1458,7 +1458,7 @@ static void i915_init_runtime_pm(struct drm_i915_pr= ivate *dev_priv) > =20 > dev_priv->pm.suspended =3D false; > =20 > - if (!HAS_RUNTIME_PM(dev)) > + if (!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm) > return; > =20 > pm_runtime_set_active(device); > @@ -1475,7 +1475,7 @@ static void i915_fini_runtime_pm(struct drm_i915_pr= ivate *dev_priv) > struct drm_device *dev =3D dev_priv->dev; > struct device *device =3D &dev->pdev->dev; > =20 > - if (!HAS_RUNTIME_PM(dev)) > + if (!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm) > return; > =20 > /* Make sure we're not suspended first. */ > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_= drv.c > index a999a3f..c75b78f 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -154,6 +154,10 @@ module_param_named(prefault_disable, i915_prefault_d= isable, bool, 0600); > MODULE_PARM_DESC(prefault_disable, > "Disable page prefaulting for pread/pwrite/reloc (default:false). For = developers only."); > =20 > +int i915_enable_runtime_pm __read_mostly =3D 0; > +module_param_named(enable_runtime_pm, i915_enable_runtime_pm, int, 0600)= ; > +MODULE_PARM_DESC(enable_runtime_pm, "Enable runtime PM on supported plat= forms (default: disabled)"); > + > static struct drm_driver driver; > extern int intel_agp_enabled; > =20 > @@ -890,7 +894,7 @@ static int i915_runtime_suspend(struct device *device= ) > struct drm_device *dev =3D pci_get_drvdata(pdev); > struct drm_i915_private *dev_priv =3D dev->dev_private; > =20 > - WARN_ON(!HAS_RUNTIME_PM(dev)); > + WARN_ON(!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm); > =20 > DRM_DEBUG_KMS("Suspending device\n"); > =20 > @@ -909,7 +913,7 @@ static int i915_runtime_resume(struct device *device) > struct drm_device *dev =3D pci_get_drvdata(pdev); > struct drm_i915_private *dev_priv =3D dev->dev_private; > =20 > - WARN_ON(!HAS_RUNTIME_PM(dev)); > + WARN_ON(!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm); This could a problem if someone disables runtime_pm through sysfs while the device is suspended. One solution would be just to do a get/put in the handler of i915_enable_runtime_pm and not check for it afterwards. --Imre > =20 > DRM_DEBUG_KMS("Resuming device\n"); > =20 > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_= drv.h > index 74f2b5d..73ebb9e 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1831,6 +1831,7 @@ extern bool i915_fastboot __read_mostly; > extern int i915_enable_pc8 __read_mostly; > extern int i915_pc8_timeout __read_mostly; > extern bool i915_prefault_disable __read_mostly; > +extern int i915_enable_runtime_pm __read_mostly; > =20 > extern int i915_suspend(struct drm_device *dev, pm_message_t state); > extern int i915_resume(struct drm_device *dev); > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel= _pm.c > index a973f35..617e934 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -5785,7 +5785,7 @@ void intel_runtime_pm_get(struct drm_i915_private *= dev_priv) > struct drm_device *dev =3D dev_priv->dev; > struct device *device =3D &dev->pdev->dev; > =20 > - if (!HAS_RUNTIME_PM(dev)) > + if (!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm) > return; > =20 > pm_runtime_mark_last_busy(device); > @@ -5798,7 +5798,7 @@ void intel_runtime_pm_put(struct drm_i915_private *= dev_priv) > struct drm_device *dev =3D dev_priv->dev; > struct device *device =3D &dev->pdev->dev; > =20 > - if (!HAS_RUNTIME_PM(dev)) > + if (!HAS_RUNTIME_PM(dev) || !i915_enable_runtime_pm) > return; > =20 > pm_runtime_mark_last_busy(device); --=-UrakE61HgIWEHgq3uK14 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQEcBAABAgAGBQJSbmZLAAoJEORIIAnNuWDFngwH/RbTp7pE+P7mIO239aVYhRy8 P/Zg9Cm4ykefbY5H7e2hvRQvzIp7j3yQDeFBXf5uBZdCjDSS+qI7S/cZ+oE5oMfZ BADtoxfripr/DiLqj4Sm9SolwJ2PAmoc1UhM2i6dwK0RRMX9gxGAWIzAgBba0ims Ix9nSyJRJDbccePUCzHzHBFgzGsdaCryfQL3ce7czYg/ZWPqxXNPSM6KQsRHzTTO Fdis+OCY8I39IY2+JGDjzVoi0OazrbGuANAwh22eHuCYHh6IAmHUywJZNokb5dJx RgH2ZUYHPgnjPI8bGuwa8uKttz9PBjS/bOJ6lpICGcq5HHu19ZNL64FkIBaFyhM= =/xs3 -----END PGP SIGNATURE----- --=-UrakE61HgIWEHgq3uK14-- --===============2119300259== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx --===============2119300259==--