[PATCH] drm/nouveau: idle all channels before suspending

Ben Skeggs skeggsb at gmail.com
Mon Apr 8 16:14:38 PDT 2013


On Mon, Apr 8, 2013 at 10:04 PM, Maarten Lankhorst <
maarten.lankhorst at canonical.com> wrote:

> Seems to make suspend slightly more reliable on my system.
>
NACK.

"Seems to", and "slightly" don't make a very good argument for this.
 Likely all you've done is change the timing of certain things happening.

The PFIFO and engine (PGRAPH etc) modules already take care of idling and
unloading active channels.  If something is broken there, that's where it
needs fixing, not this hack that "maybe" "possibly" "slightly" works.

Ben.


> Cc: stable at vger.kernel.org [3.7+]
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
> ---
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c
> b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index b6bdc9f..5032c31 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -464,6 +464,23 @@ nouveau_do_suspend(struct drm_device *dev)
>         NV_INFO(drm, "evicting buffers...\n");
>         ttm_bo_evict_mm(&drm->ttm.bdev, TTM_PL_VRAM);
>
> +       list_for_each_entry(cli, &drm->clients, head) {
> +               struct nouveau_abi16 *abi16 = cli->abi16;
> +               struct nouveau_abi16_chan *chan;
> +
> +               if (!abi16)
> +                       continue;
> +
> +               list_for_each_entry(chan, &abi16->channels, head)
> +                       nouveau_channel_idle(chan->chan);
> +       }
> +
> +       if (drm->channel)
> +               nouveau_channel_idle(drm->channel);
> +
> +       if (drm->cechan)
> +               nouveau_channel_idle(drm->cechan);
> +
>         if (drm->fence && nouveau_fence(drm)->suspend) {
>                 if (!nouveau_fence(drm)->suspend(drm))
>                         return -ENOMEM;
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130409/711f4be4/attachment.html>


More information about the dri-devel mailing list