Skip to content

Commit

Permalink
drm/nouveau: ensure channels are stopped before saving fences for sus…
Browse files Browse the repository at this point in the history
…pend

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information
Ben Skeggs committed May 20, 2013
1 parent b509656 commit 81dff21
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions drivers/gpu/drm/nouveau/nouveau_drm.c
Original file line number Diff line number Diff line change
Expand Up @@ -453,18 +453,32 @@ nouveau_do_suspend(struct drm_device *dev)
NV_INFO(drm, "evicting buffers...\n");
ttm_bo_evict_mm(&drm->ttm.bdev, TTM_PL_VRAM);

NV_INFO(drm, "waiting for kernel channels to go idle...\n");
if (drm->cechan) {
ret = nouveau_channel_idle(drm->cechan);
if (ret)
return ret;
}

if (drm->channel) {
ret = nouveau_channel_idle(drm->channel);
if (ret)
return ret;
}

NV_INFO(drm, "suspending client object trees...\n");
if (drm->fence && nouveau_fence(drm)->suspend) {
if (!nouveau_fence(drm)->suspend(drm))
return -ENOMEM;
}

NV_INFO(drm, "suspending client object trees...\n");
list_for_each_entry(cli, &drm->clients, head) {
ret = nouveau_client_fini(&cli->base, true);
if (ret)
goto fail_client;
}

NV_INFO(drm, "suspending kernel object tree...\n");
ret = nouveau_client_fini(&drm->client.base, true);
if (ret)
goto fail_client;
Expand Down Expand Up @@ -514,17 +528,18 @@ nouveau_do_resume(struct drm_device *dev)

nouveau_agp_reset(drm);

NV_INFO(drm, "resuming client object trees...\n");
NV_INFO(drm, "resuming kernel object tree...\n");
nouveau_client_init(&drm->client.base);
nouveau_agp_init(drm);

NV_INFO(drm, "resuming client object trees...\n");
if (drm->fence && nouveau_fence(drm)->resume)
nouveau_fence(drm)->resume(drm);

list_for_each_entry(cli, &drm->clients, head) {
nouveau_client_init(&cli->base);
}

if (drm->fence && nouveau_fence(drm)->resume)
nouveau_fence(drm)->resume(drm);

nouveau_run_vbios_init(dev);
nouveau_pm_resume(dev);

Expand Down

0 comments on commit 81dff21

Please sign in to comment.