[Intel-gfx] [PATCH v2] drm/i915/dgfx: Enable d3cold at s2idle
Gupta, Anshuman
anshuman.gupta at intel.com
Thu Aug 17 16:07:22 UTC 2023
Thanks for review and Testing.
CI Full run failure was unrelated to this patch.
Pushed to drm-intel-next
Regards,
Anshuman Gupta.
> -----Original Message-----
> From: Yu, Jianshui <jianshui.yu at intel.com>
> Sent: Thursday, August 17, 2023 8:09 PM
> To: Gupta, Anshuman <anshuman.gupta at intel.com>; intel-
> gfx at lists.freedesktop.org
> Cc: Nilawar, Badal <badal.nilawar at intel.com>; Tauro, Riana
> <riana.tauro at intel.com>; Vivi, Rodrigo <rodrigo.vivi at intel.com>; Wang,
> Lidong <lidong.wang at intel.com>; stable at vger.kernel.org
> Subject: RE: [PATCH v2] drm/i915/dgfx: Enable d3cold at s2idle
>
> Tested-By: Jianshui Yu <Jianshui.yu at intel.com>
>
> -----Original Message-----
> From: Gupta, Anshuman <anshuman.gupta at intel.com>
> Sent: Wednesday, August 16, 2023 8:52 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: Nilawar, Badal <badal.nilawar at intel.com>; Tauro, Riana
> <riana.tauro at intel.com>; Vivi, Rodrigo <rodrigo.vivi at intel.com>; Yu, Jianshui
> <jianshui.yu at intel.com>; Wang, Lidong <lidong.wang at intel.com>; Gupta,
> Anshuman <anshuman.gupta at intel.com>; stable at vger.kernel.org
> Subject: [PATCH v2] drm/i915/dgfx: Enable d3cold at s2idle
>
> System wide suspend already has support for lmem save/restore during
> suspend therefore enabling d3cold for s2idle and keepng it disable for
> runtime PM.(Refer below commit for d3cold runtime PM disable
> justification) 'commit 66eb93e71a7a ("drm/i915/dgfx: Keep PCI autosuspend
> control 'on' by default on all dGPU")'
>
> It will reduce the DG2 Card power consumption to ~0 Watt for s2idle power
> KPI.
>
> v2:
> - Added "Cc: stable at vger.kernel.org".
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8755
> Cc: stable at vger.kernel.org
> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
> drivers/gpu/drm/i915/i915_driver.c | 33 ++++++++++++++++--------------
> 1 file changed, 18 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_driver.c
> b/drivers/gpu/drm/i915/i915_driver.c
> index b870c0df081a..ec4d26b3c17c 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -443,7 +443,6 @@ static int i915_pcode_init(struct drm_i915_private
> *i915) static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) {
> struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> - struct pci_dev *root_pdev;
> int ret;
>
> if (i915_inject_probe_failure(dev_priv))
> @@ -557,15 +556,6 @@ static int i915_driver_hw_probe(struct
> drm_i915_private *dev_priv)
>
> intel_bw_init_hw(dev_priv);
>
> - /*
> - * FIXME: Temporary hammer to avoid freezing the machine on our
> DGFX
> - * This should be totally removed when we handle the pci states
> properly
> - * on runtime PM and on s2idle cases.
> - */
> - root_pdev = pcie_find_root_port(pdev);
> - if (root_pdev)
> - pci_d3cold_disable(root_pdev);
> -
> return 0;
>
> err_opregion:
> @@ -591,7 +581,6 @@ static int i915_driver_hw_probe(struct
> drm_i915_private *dev_priv) static void i915_driver_hw_remove(struct
> drm_i915_private *dev_priv) {
> struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> - struct pci_dev *root_pdev;
>
> i915_perf_fini(dev_priv);
>
> @@ -599,10 +588,6 @@ static void i915_driver_hw_remove(struct
> drm_i915_private *dev_priv)
>
> if (pdev->msi_enabled)
> pci_disable_msi(pdev);
> -
> - root_pdev = pcie_find_root_port(pdev);
> - if (root_pdev)
> - pci_d3cold_enable(root_pdev);
> }
>
> /**
> @@ -1519,6 +1504,8 @@ static int intel_runtime_suspend(struct device
> *kdev) {
> struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
> + struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> + struct pci_dev *root_pdev;
> struct intel_gt *gt;
> int ret, i;
>
> @@ -1570,6 +1557,15 @@ static int intel_runtime_suspend(struct device
> *kdev)
> drm_err(&dev_priv->drm,
> "Unclaimed access detected prior to suspending\n");
>
> + /*
> + * FIXME: Temporary hammer to avoid freezing the machine on our
> DGFX
> + * This should be totally removed when we handle the pci states
> properly
> + * on runtime PM.
> + */
> + root_pdev = pcie_find_root_port(pdev);
> + if (root_pdev)
> + pci_d3cold_disable(root_pdev);
> +
> rpm->suspended = true;
>
> /*
> @@ -1608,6 +1604,8 @@ static int intel_runtime_resume(struct device
> *kdev) {
> struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
> + struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> + struct pci_dev *root_pdev;
> struct intel_gt *gt;
> int ret, i;
>
> @@ -1621,6 +1619,11 @@ static int intel_runtime_resume(struct device
> *kdev)
>
> intel_opregion_notify_adapter(dev_priv, PCI_D0);
> rpm->suspended = false;
> +
> + root_pdev = pcie_find_root_port(pdev);
> + if (root_pdev)
> + pci_d3cold_enable(root_pdev);
> +
> if (intel_uncore_unclaimed_mmio(&dev_priv->uncore))
> drm_dbg(&dev_priv->drm,
> "Unclaimed access during suspend, bios?\n");
> --
> 2.25.1
More information about the Intel-gfx
mailing list