[Intel-gfx] [PATCH 2/4] drm/i915: Disallow D3Cold.
Imre Deak
imre.deak at intel.com
Fri Aug 27 16:58:29 UTC 2021
On Wed, Aug 25, 2021 at 11:22:31AM -0400, Rodrigo Vivi wrote:
> During runtime or s2idle suspend and resume cases on discrete cards,
> if D3Cold is really achieved, we will blow everything up and
> freeze the machine because we are not yet handling the pci states
> properly.
Is this some ordering problem wrt. pci_save_state()? In theory the RPM
core should take care of this (see pci_pm_runtime_suspend()) and the PCI
rpm docs don't recommend doing this manually from the driver's callback.
> On Integrated it simply doesn't matter because D3hot is the maximum
> that we will get anyway, unless the system is on S3/S4 and our power
> is cut.
Is the support for D3cold indicated in the PCI PM capabailities? I can't
see this being enabled for IGDs, so probably there's no problem with
disabling it on those.
I also checked a DG1 card, but it's also disabled there, do you have any
having it enabled?
> Let's put this hammer for now everywhere. So we can work to enable
> the auto-suspend by default without blowing up the world.
>
> Then, this should be removed when we finally fix the D3Cold flow.
>
> Cc: Tilak Tangudu <tilak.tangudu at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
Since it helps with the discrete cards:
Acked-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index a40b5d806321..086a9a475ce8 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -301,6 +301,7 @@ static void sanitize_gpu(struct drm_i915_private *i915)
> */
> static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> {
> + struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> int ret = 0;
>
> if (i915_inject_probe_failure(dev_priv))
> @@ -331,6 +332,13 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> if (ret < 0)
> return ret;
>
> + /*
> + * 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.
> + */
> + pci_d3cold_disable(pdev);
> +
> ret = vlv_suspend_init(dev_priv);
> if (ret < 0)
> goto err_workqueues;
> --
> 2.31.1
>
More information about the Intel-gfx
mailing list