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@xxxxxxxxx> > Sent: Thursday, August 17, 2023 8:09 PM > To: Gupta, Anshuman <anshuman.gupta@xxxxxxxxx>; intel- > gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Nilawar, Badal <badal.nilawar@xxxxxxxxx>; Tauro, Riana > <riana.tauro@xxxxxxxxx>; Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>; Wang, > Lidong <lidong.wang@xxxxxxxxx>; stable@xxxxxxxxxxxxxxx > Subject: RE: [PATCH v2] drm/i915/dgfx: Enable d3cold at s2idle > > Tested-By: Jianshui Yu <Jianshui.yu@xxxxxxxxx> > > -----Original Message----- > From: Gupta, Anshuman <anshuman.gupta@xxxxxxxxx> > Sent: Wednesday, August 16, 2023 8:52 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Nilawar, Badal <badal.nilawar@xxxxxxxxx>; Tauro, Riana > <riana.tauro@xxxxxxxxx>; Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>; Yu, Jianshui > <jianshui.yu@xxxxxxxxx>; Wang, Lidong <lidong.wang@xxxxxxxxx>; Gupta, > Anshuman <anshuman.gupta@xxxxxxxxx>; stable@xxxxxxxxxxxxxxx > 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@xxxxxxxxxxxxxxx". > > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8755 > Cc: stable@xxxxxxxxxxxxxxx > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Signed-off-by: Anshuman Gupta <anshuman.gupta@xxxxxxxxx> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > 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