Skip to content

Commit

Permalink
drm/nouveau: fix suspend failure path to reinitialise all engines
Browse files Browse the repository at this point in the history
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information
Ben Skeggs committed May 16, 2011
1 parent 39a654d commit 92abe74
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions drivers/gpu/drm/nouveau/nouveau_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,11 +162,10 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state)
struct drm_device *dev = pci_get_drvdata(pdev);
struct drm_nouveau_private *dev_priv = dev->dev_private;
struct nouveau_instmem_engine *pinstmem = &dev_priv->engine.instmem;
struct nouveau_pgraph_engine *pgraph = &dev_priv->engine.graph;
struct nouveau_fifo_engine *pfifo = &dev_priv->engine.fifo;
struct nouveau_channel *chan;
struct drm_crtc *crtc;
int ret, i;
int ret, i, e;

if (pm_state.event == PM_EVENT_PRETHAW)
return 0;
Expand Down Expand Up @@ -206,19 +205,17 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state)
nouveau_channel_idle(chan);
}

pgraph->fifo_access(dev, false);
nouveau_wait_for_idle(dev);

for (i = NVOBJ_ENGINE_NR - 1; i >= 0; i--) {
if (dev_priv->eng[i])
dev_priv->eng[i]->fini(dev, i);
}

pfifo->reassign(dev, false);
pfifo->disable(dev);
pfifo->unload_context(dev);
if (pgraph->unload_context)
pgraph->unload_context(dev);

for (e = NVOBJ_ENGINE_NR - 1; e >= 0; e--) {
if (dev_priv->eng[e]) {
ret = dev_priv->eng[e]->fini(dev, e);
if (ret)
goto out_abort;
}
}

ret = pinstmem->suspend(dev);
if (ret) {
Expand Down Expand Up @@ -249,9 +246,12 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state)

out_abort:
NV_INFO(dev, "Re-enabling acceleration..\n");
for (e = e + 1; e < NVOBJ_ENGINE_NR; e++) {
if (dev_priv->eng[e])
dev_priv->eng[e]->init(dev, e);
}
pfifo->enable(dev);
pfifo->reassign(dev, true);
pgraph->fifo_access(dev, true);
return ret;
}

Expand Down

0 comments on commit 92abe74

Please sign in to comment.